2017-02-07 11 views
-2

meta_keyの値が('A', 'B', 'C')の場合、1行としてクエリする必要がある複数行にわたって関連するデータを持つテーブルがあります。私はで終わるために探しています何SQL複数の行を1つの行に選択します。

meta_id | post_id | meta_key | meta_value 
--------+---------+----------+----------- 
    1 | 1234 | A  | Foo 
    2 | 1234 | B  | Bar 
    3 | 1234 | C  | Baz 
    4 | 1234 | D  | junk 

は、私はあなたがそのような結果を得るために、条件付き集約を使用することができます

出力

A | B | C 
----+-----+---- 
Foo | Bar | Baz 

答えて

1

結果得られたクエリです。これは、与えられたpost_idに対してmeta_keyごとに1つのmeta_valueが存在することを前提としています。 meta_key = 'A' AND meta_keyは= 'B' AND meta_keyは= 'C'

を制限するにはtable_name FROM

SELECT *:あなたは、単にこのSQL条件付きクエリコマンドを実行することができます

select 
max(case when meta_key='A' then meta_value end) as A, 
max(case when meta_key='B' then meta_value end) as B, 
max(case when meta_key='C' then meta_value end) as C 
from yourtable 
group by post_id 
-2

クエリ結果は、実行:

SELECT * FROMをtable_name WHERE meta_key = 'A' AND meta_key = 'B' AND meta_key = 'C' LIMIT 10

注:L IMITキーワードは有効な整数の範囲を受け入れます。

+0

フィールドmeta_keyには、テーブルのレコードの値に 'A'と 'B'と 'C'を同時に掛けることはできません。 –

関連する問題