如果列名包含特定值,如何显示列名?

时间:2014-09-11 15:53:04

标签: mysql

我正在尝试显示my table的列名,如果它的值为1

| A | B | C | D |
| 0 | 1 | 1 | 0 |

在这种情况下,我想得到结果:

| Column |
| B      |
| C      |

我编写了以下查询,但它无效:

 SHOW COLUMNS 
 FROM `questions` 
 WHERE VALUES=`1`

1 个答案:

答案 0 :(得分:2)

如果您只需要包含值= 1的列的列表,则应该能够使用以下查询:

select col
from 
(
  select col, 
    case s.col
      when 'A' then A
      when 'B' then B
      when 'C' then C
      when 'D' then D
    end AS val
  from yourtable
  cross join
  (
    select 'A' AS col union all
    select 'B' union all
    select 'C' union all 
    select 'D'
  ) s
) s
where val = 1;

SQL Fiddle with Demo。这将使用包含列名称(AB等)的虚拟表来取消对列的拆分,然后只返回包含值1的列名称。此技术的信用转到@Andriy M