gpt4 book ai didi

mysql - 如何删除两个表上内部连接的重复

转载 作者:行者123 更新时间:2023-11-30 21:48:04 25 4
gpt4 key购买 nike

我有两个表:一个“父”表 tableA 和一个“子”表,每个父行都有很多行,如下所示:

tableA
a_id email role
1 abc@gmail admin
2 abc2@gmail teacher
3 abc2@gmail student

tableB
b_id a_id meta_key meta_value
1 1 first name
2 1 last name
3 1 mobileno 989898989
4 2 first name
5 2 last name singh

我想要带有列的数据:

a_id, email, first_name, last_name, mobileno

但我不知道该怎么做。

最佳答案

对于需要来自以下数据的每个不同行,您需要连接到“子”表一次:

select
a.a_id,
email,
b1.meta_value as first_name,
b2.meta_value as last_name,
b3.meta_value as mobileno
from tablea a
left join tableb b1 on b1.a_id = a.a_id
and b1.meta_name = 'first name'
left join tableb b2 on b2.a_id = a.a_id
and b2.meta_name = 'last name'
left join tableb b3 on b3.a_id = a.a_id
and b3.meta_name = 'mobileno'

我选择了outer(即left)连接,这样即使 tableb 中缺少一些相应的数据,您仍然可以从 tablea 中获取行。


以“meta”开头的列名不包含元数据,它们包含普通数据。 “元数据”是关于数据的数据,而不是“额外”数据;例如手机号码不描述其他数据值。

您应该考虑将列重命名为“data_name”和“data_value”。

关于mysql - 如何删除两个表上内部连接的重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48540626/

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