sql >> データベース >  >> RDS >> Mysql

特定の行の値によって動的に列名を取得する

    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. 配列内のSQLLIKE%

    2. oracle diff:2つのテーブルを比較する方法は?

    3. Laravelでの生の関連性クエリ。それをどのように扱うのですか?

    4. MariaDB文字列関数(完全なリスト)