在MySQL中结合两行将数据显示为一行

时间:2013-04-05 09:31:23

标签: php mysql join

我想加入WooCommerce创建的后期元字段,以便在一行中显示客户的名字和姓氏。

mysql的表结构如下:

meta_id    post_id    meta_key                meta_value
=======    =======    =======                 ===========
1234       1874       _billing_first_name     John
1235       1874       _billing_last_name      Cobe

现在我希望它使用mysql语句返回以下结果

post_id    _billing_first_name    _billing_last_name
=======    ====================   ==================
1874       John                   Cobe

期待您的建议和帮助。

感谢。

2 个答案:

答案 0 :(得分:5)

如果meta_key有两个固定值,可以使用以下内容:

SELECT
  post_id,
  MAX(CASE WHEN meta_key='_billing_first_name' THEN meta_value END) _billing_first_name,
  MAX(CASE WHEN meta_key='_billing_last_name' THEN meta_value END) _billing_last_name
FROM
  yourtable
GROUP BY
  post_id

答案 1 :(得分:0)

查看PIVOT功能。我认为这对你来说非常有用 以下是SQL Fiddle

中的示例
SELECT *
FROM
(
  SELECT post_id, meta_key, meta_value
  FROM table_name WHERE post_id = 1874
) as x
PIVOT
(
  MAX(meta_value)
  FOR meta_key IN ([_billing_first_name], [_billing_last_name])
) as p