私は、 ID、attr_name、attr_valueという3つの列を持つテーブル "tbl_meta"から結果を取得するクエリを作成しています。複数の列を1つの行に複数の列として取得するmysql
表の構造は、2列目のようなものである属性と第三列の名前がそう
ID attr_name attr_value
1 name abc
2 address aaa
3 age 25
以下のようにその値である私は、「tbl_meta ID = 10から選択*」を使用したときに、私はなどのようになりましたです上記のとおりですが、次のような列の結果が必要です:
col1 col2 col3 col4 col5 col6
name abc address aaa age 25
私はこれをmysqlでどうやって行うことができますか?
NOTE
私はMySQL - Rows to ColumnsとMySQL pivot row into dynamic number of columns @与えられた解決策を試してみましたが、それは私が期待していない方法です。私は私のように出力を取得しています
SELECT
case when attr_name = 'name' then attr_value end as name ,
case when attr_name = 'address' then attr_value end as address,
case when attr_name = 'age' then attr_value end as agep,
FROM tbl_meta
where ID = 10
ようにしようとしたとき は:
name address age
abc NULL NULL
NULL aaa NULL
NULL NULL 25
代わりに私は、上記の表から
name address age
abc aaa 25
のように取得することができません。
この操作はピボットと呼ばれ、何度もSO soooooで質問され、ここで回答されています。リンクされた重複トピックは、SQLを介して静的および動的ピボット・テーブルの作成方法を説明します。 mysqlとは対照的に、アプリケーションロジックでこのような変換を実行する方がはるかに効率的かもしれません。 – Shadow
私はそれを前に試しましたが、期待通りの結果ではないので、新しい質問を投稿しました。 – Nil
更新された質問への答えはまだ 'MySQL - Rows to Columns'重複質問にあります。そこでは、最も変わった答えが、この変換方法を段階的に説明しています。plsはそれを読んでいます。 – Shadow