我在写一个query.i搜查,并没有发现任何解决这个来袭。 在这里,我想基于一些特定的值,显示列名
例如,我的表像。
id | fruits |vegetables |softdrink
-----------------------
1 | apple | Onion | Pepsi
2 | mango | Potato | Coke
3 | banana | Bringal | RedBull
如果我有一个值“芒果”,那么我应该得到的列名作为水果或
如果我有一个值“红牛”,那么我应该得到的列名作为软饮料
注 :我身边有很多48列,从它们中的任何一个获得名
谢谢,有点帮助表示赞赏。
set @q= CONCAT('SELECT columns.column_name
from table inner
join information_schema.columns
on columns.table_schema = "dbname"
and columns.table_name = "table"
and ((',
(SELECT GROUP_CONCAT(CONCAT('columns.column_name="',column_name,'"',' and table.',column_name,' = "value','"') SEPARATOR ' OR ')
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_name = 'table'),
'))');
prepare query from @q;
execute query;
这工作肯定..
唷!
小提琴: http://sqlfiddle.com/#!2/9420c/2/2
PS:替换table
与表名, dbname
与你的数据库名称和value
与值
当你尽可能多地加密你的问题,我只能猜测。
此表气味不好的设计。 它应该是这样的
col | value
col1 | a
col1 | b
col2 | d
等等。
比你可以轻松地从价值得到您的山坳出