You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL查询:如何按指定名称筛选值为1的对应列?

MySQL动态返回指定列的查询方案

假设你的数据表名为your_table,结构和数据如下:

NameItem AItem BItem C
Jhon011
Lee100

方案1:针对单个名称的固定查询

如果只是单独查询某个名称,直接编写对应列的SELECT语句即可:

查询Jhon:

SELECT Name, `Item B`, `Item C`
FROM your_table
WHERE Name = 'Jhon';

查询Lee:

SELECT Name, `Item A`
FROM your_table
WHERE Name = 'Lee';

方案2:动态适配名称的通用查询

如果需要根据输入的名称自动返回对应列,可以使用MySQL的动态SQL实现:

-- 设置要查询的目标名称,可替换为'Lee'
SET @target_name = 'Jhon';

-- 拼接动态查询语句
SET @sql = CONCAT(
    'SELECT Name',
    CASE @target_name
        WHEN 'Jhon' THEN ', `Item B`, `Item C`'
        WHEN 'Lee' THEN ', `Item A`'
        ELSE ''
    END,
    ' FROM your_table WHERE Name = ''', @target_name, ''''
);

-- 执行动态SQL
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

说明

  • MySQL的SELECT语句列是静态定义的,无法在单个静态查询中根据条件返回不同列集合,因此要么分写单独查询,要么用动态SQL拼接语句。
  • 当列名包含空格时,必须用反引号(`)包裹,避免语法错误。

内容的提问来源于stack exchange,提问作者JustXie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 02:05:23