【问题标题】:Generating Multiple Columns Based On The Column Content根据列内容生成多列
【发布时间】:2017-08-25 08:51:37
【问题描述】:

我需要生成一个连接两个用户相关表的结果 - 用户和用户元。这些来自 Wordpress MySQL 数据库。

用户表 -

ID user_email
1  abc@gmail.com
2  xyz@gmail.com
3  1sf@email.com

用户元表 -

Umeta_ID user_id meta_key          meta_value
1000     1       billing_phone     9876443100
1001     1       billing_postcode  670001
1002     1       billing_address   Somewhere here, Delhi
1003     2       billing_phone     9876345188
1004     2       billing_postcode  650021
1005     2       billing_address   7th Lane, Bangalore
1003     3       billing_phone     7852562100
1004     3       billing_postcode  400521
1005     3       billing_address   Fancy Area, Mumbai

Usermeta 表中的 user_id 列可以引用 User 表中的 ID 列。

我急需一个以这种方式给出结果的 MYSQL 查询 -

ID user_email     billing_phone billing_postcode billing_address
1  abc@gmail.com  9876443100    670001           Somewhere here, Delhi
2  abc@gmail.com  9876345188    650021           7th Lane, Bangalore
3  1sf@gmail.com  7852562100    400521           Fancy Area, Mumbai

我尝试在这样的两个连接上做一个 UNION

SELECT 6ft_users.ID, 6ft_usermeta.meta_value as PHONE_NUMBER
FROM 6ft_users
INNER JOIN 6ft_usermeta
ON 6ft_users.ID=6ft_usermeta.user_id
WHERE 6ft_usermeta.meta_key LIKE 'billing_phone'
UNION
SELECT 6ft_users.ID, 6ft_usermeta.meta_value as POSTCODE
FROM 6ft_users
INNER JOIN 6ft_usermeta
ON 6ft_users.ID=6ft_usermeta.user_id
WHERE 6ft_usermeta.meta_key LIKE 'billing_postcode';

但这无济于事,因为我只得到一列 - PHONE_NUMBER。我尝试了其他一些东西,但无济于事。请帮帮我。 提前致谢!

【问题讨论】:

    标签: mysql sql select join group-by


    【解决方案1】:

    试试这个:

    SELECT U.ID, 
           U.user_email, 
           MAX(IF(UM.meta_key = 'billing_phone', UM.meta_value, '')) AS billing_phone, 
           MAX(IF(UM.meta_key = 'billing_postcode', UM.meta_value, '')) AS billing_postcode, 
           MAX(IF(UM.meta_key = 'billing_address', UM.meta_value, '')) AS billing_address
    FROM 6ft_users U
    LEFT JOIN 6ft_usermeta UM ON U.ID = UM.user_id
    GROUP BY U.ID 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-06-01
      • 1970-01-01
      • 2019-04-25
      • 1970-01-01
      • 2021-08-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多