2017-10-31 15 views
-1

私は、 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 ColumnsMySQL 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 

のように取得することができません。

+0

この操作はピボットと呼ばれ、何度もSO soooooで質問され、ここで回答されています。リンクされた重複トピックは、SQLを介して静的および動的ピボット・テーブルの作成方法を説明します。 mysqlとは対照的に、アプリケーションロジックでこのような変換を実行する方がはるかに効率的かもしれません。 – Shadow

+0

私はそれを前に試しましたが、期待通りの結果ではないので、新しい質問を投稿しました。 – Nil

+0

更新された質問への答えはまだ 'MySQL - Rows to Columns'重複質問にあります。そこでは、最も変わった答えが、この変換方法を段階的に説明しています。plsはそれを読んでいます。 – Shadow

答えて

0

次のようなものを使用できます。

SELECT *, (IF ID=10) AS new_column FROM tbl_meta; 
+0

申し訳ありませんが動作しません。 – Nil

関連する問題