mysql:在两列中搜索一个值并返回找到的列名

时间:2014-12-21 18:03:12

标签: mysql sql

例如我们有下表 列

id a b
 1 1 2 
 2 3 4 
 3 5 6 
 4 7 8 

我们正在寻找a栏和b栏中的值7 有没有办法查询表并返回列的名称' a' ????

1 个答案:

答案 0 :(得分:1)

首先选择a或b为7的所有行。然后使用case语句返回“7”列的名称。

select id,
    case when a = 7
    then 'a'
    else 'b'
    end
from mytable
where 7 in (a,b)

使用union all

的另一种方法
select id , 'a'
from mytable where a = 7
union all
select id , 'b'
from mytable where b = 7

如果同一行的a和b都可以是7,那么union all查询将返回行的ID,其中每列的值都是7,而第一个查询只返回值{{ 1}}。