繁体   English   中英

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

[英]Combine Two Rows in MySQL to Show Data as One Row

我想加入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

期待您的建议和帮助。

谢谢。

如果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 *
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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM