gpt4 book ai didi

mysql - SQL内连接合并为一行

转载 作者:行者123 更新时间:2023-11-29 07:26:02 25 4
gpt4 key购买 nike

通过此 SQL 查询,我为每个元值获取一个结果,因此在本例中一次获得 2 个结果。应该发生的情况是,每个 meta_key 都获得自己的列(user_phonefull_name),并且 meta_key 在行中。

SELECT * 
FROM invoice_users
INNER JOIN invoice_usermeta
on invoice_users.id = invoice_usermeta.user_id
WHERE meta_key='full_name' OR meta_key='user_phone';

我尝试了 GROUP BY 但这是不对的,而且我无法理解子查询...

invoice_users 的数据库方案

ID | user_login | user_register
--------------------------------
0 username [Timestamp]
1 user2 [Timestamp]
2 user3 [Timestamp]

invoice_usermeta的数据库方案

ID | user_id |  meta_key | meta_value
--------------------------------------
0 0 user_phone 0334234
1 0 full_name John Doe
2 1 user_phone 3453455
3 1 full_name Jane Doe
4 2 user_phone 78678678
5 3 full_name John Smith

我得到的结果:

ID  |  user_login | user_registered |  meta_key | meta_value
0 username [Timestamp] full_name John Doe
0 username [Timestamp] user_phone 0334234
1 username [Timestamp] full_name Jane Doe
1 username [Timestamp] user_phone 3453455

等等..

我想要什么

ID  |  user_login | user_registered | user_id |full_name | user_phone
0 username [Timestamp] 0 John Doe 0334234
1 username [Timestamp] 1 Jane Doe 3453455

等等

最佳答案

您提供的信息有点稀疏,但我会尝试一下。您可能想要执行两次联接,如下所示:

SELECT u.*, m1.meta_value, m2.meta_value
FROM invoice_users u
LEFT OUTER JOIN invoice_usermeta m1
on u.id = m1.user_id
and m1.meta_key='user_phone'
LEFT OUTER JOIN invoice_usermeta m2
on u.id = m2.user_id
and m2.meta_key='full_name'

如果这还不够,因为您有很多元值,您可能需要研究与 Sql Server PIVOT 等效的 MySQL(很可能是 PIVOT,我只是对 MySQL 不太了解)

关于mysql - SQL内连接合并为一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34516725/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com