0

クエリを書いて感銘を受けました。ここで、特定の値に基づいて列名を表示したい

たとえば、私のテーブルは次のようになります。

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

値が「マンゴー」の場合、列名をフルーツまたは

値が「RedBull」の場合、列名をソフトドリンクとして取得する必要があります

:48前後に多くの列があり、それらのいずれかから名前を取得できます

4

2 に答える 2

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あなたの値に置き換えてください

于 2013-05-18T08:57:09.280 に答える
-1

質問を可能な限り暗号化したので、推測することしかできません。

このテーブルは悪いデザインのにおいがする. そして、それは次のようになるはずです

 col  | value
 col1 | a
 col1 | b
 col2 | d

等々。

値から簡単にコルを取得できるよりも

于 2013-05-18T08:13:08.690 に答える