在同一列上选择不同的值

时间:2016-01-21 12:15:30

标签: mysql sql select

我正在尝试使用以下内容获取HTML表格:

User's first name | User's last name | Phone | Product he bought

我有下一张桌子(用Woocommerce自动制作):

meta_id  |  post_id  |  meta_key  |  meta_value

   100         41        email      email@example
   101         41        phone       666666666
   102         41       firstname       Name
   103         41       lastname       Lastname

如何只用一个查询选择电子邮件,电话,名字和姓氏的值,以便在我的PHP文件中“回显”它。 尝试使用UNION,在第一个SELECT中使用SELECT ...并且它们不输出我想要的内容。

谢谢!

1 个答案:

答案 0 :(得分:3)

一种方法是使用条件聚合:

select post_id,
       max(case when meta_key = 'firstname' then meta_value end) as firstname,
       max(case when meta_key = 'lastname' then meta_value end) as lastname,
       max(case when meta_key = 'phone' then meta_value end) as phone,
       max(case when meta_key = 'email' then meta_value end) as email
from t
group by post_id;

条件聚合使得在重复键时添加新列或连接值非常容易(提示:使用group_concat())。