SQL将多行选择为一行

时间:2017-02-07 20:39:21

标签: mysql sql

我有一个包含多行相关数据的表,如果meta_key值在('A', 'B', 'C')中,我需要将其作为一行查询。

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

2 个答案:

答案 0 :(得分:1)

您可以使用条件聚合来获得此类结果。假设给定的post_id每个meta_key有一个meta_value。

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

答案 1 :(得分:-2)

您只需运行此SQL条件查询命令:

SELECT * FROM table_name WHERE meta_key ='A'AND_key ='B'AND meta_key ='C'

要限制查询结果,请执行以下操作:

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

注意:LIMIT关键字接受任何有效的整数范围。