当有一个值sql mysql时返回colum名称

时间:2018-04-05 21:28:03

标签: mysql sql

我正在使用三个选项A, B & C

创建投票

表投票

 id_poll id_voter value_A value_B value_C
    23      12      0       1       0
    23      11      1       0       0 

任何时候我对特定字母投票时,我将数字1插入其列,0插入其他字母

问题

我想返回投票信的列名(存在1)。

我在想这样的事情

SQL

SELECT (¿?) as entry_selected 
FROM poll
WHERE (column_value=1?) AND id_voter='11'

我想要返回value_A

2 个答案:

答案 0 :(得分:2)

我建议使用case

select (case when value_a = 1 then 'value_a'
             when value_b = 1 then 'value_b'
             when value_c = 1 then 'value_c'
        end)
from poll
where 1 in (value_a, value_b, value_c);

答案 1 :(得分:1)

您必须对列名进行硬编码(除非其他人有更好的解决方案),但您可以这样做:

SELECT IF(value_a = 1, 'value_a', IF(value_b, 'value_b', IF(value_c, 'value_c', ''))) as entry_selected 
FROM poll
WHERE (value_a = 1 OR value_b = 1 OR value_c = 1) AND id_voter='11'

更好的解决方案是更改数据的结构:

id_poll id_voter value
23      12       B     
23      11       A