我很惊讶于编写了一个查询。我搜索过,但没有找到任何解决方案。 在这里,我想根据一些特定值
显示列名对于Instance,我的表就像。
id | fruits |vegetables |softdrink
-----------------------
1 | apple | Onion | Pepsi
2 | mango | Potato | Coke
3 | banana | Bringal | RedBull
如果我有一个值“芒果”,那么我应该将列名称作为水果或
如果我有一个值“RedBull”,那么我应该将列名称作为softdrink
注意:我在48左右有很多列可以从其中任何一个获取名称
谢谢,一点帮助表示赞赏。
答案 0 :(得分:1)
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
替换为您的值
答案 1 :(得分:-1)
当你尽可能加密你的问题时,我只能猜测。
这张桌子闻起来很糟糕。它应该像 col | value
col1 | a
col1 | b
col2 | d
等等。
比您可以轻松地从价值中获取