将MySQL中的两行合并为一行


Combine Two Rows in MySQL to Show Data as One Row

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

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

期待您的建议和帮助。

谢谢。

如果您有两个固定的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

看一下PIVOT函数。我想它会非常适合你的。
下面是SQL Fiddle

中的一个示例<>之前SELECT *从(SELECT post_id, meta_key, meta_valueFROM table_name WHERE post_id = 1874)为x主(马克斯(meta_value)FOR meta_key IN ([_billing_first_name], [_billing_last_name]))作为…