按特定行值动态获取列名称

时间:2013-05-18 07:14:48

标签: mysql database mysqli

我很惊讶于编写了一个查询。我搜索过,但没有找到任何解决方案。 在这里,我想根据一些特定值

显示列名

对于Instance,我的表就像。

id  | fruits   |vegetables    |softdrink
-----------------------
1   | apple    | Onion        | Pepsi
2   | mango    | Potato       | Coke    
3   | banana   | Bringal      | RedBull

如果我有一个值“芒果”,那么我应该将列名称作为水果或

如果我有一个值“RedBull”,那么我应该将列名称作为softdrink

注意:我在48左右有很多列可以从其中任何一个获取名称

谢谢,一点帮助表示赞赏。

2 个答案:

答案 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

等等。

比您可以轻松地从价值中获取