假设下面的电子表格代表我的数据库表。
我需要一个在条目'1000'上搜索此表的查询,并为我提供'id'及其找到它的column_name。我将得到以下结果集:
id column_name
--- ---------
1 column_c
2 column_a
2 column_d
4 column_d
我知道这是一个关于数据库查询的非常不寻常的问题,因为我还没找到我想要的东西。
答案 0 :(得分:3)
执行此操作的最简单方法可能是将表格取消,以使列成为行,然后使用匹配值过滤行。由于MySQL没有任何unpivot
运算符,我们可以使用union
作为集合连接的一堆查询来执行此操作。每个查询都包含一个指定源列名称的文字值。
select id, 'Column_a' Col from your_table where column_a = 1000 -- or like '1000%' etc.
union all
select id, 'Column_b' Col from your_table where column_b = 1000
union all
select id, 'Column_c' Col from your_table where column_c = 1000
union all
select id, 'Column_d' Col from your_table where column_d = 1000
order by id, Col