我正在使用三个选项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
答案 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