多表连接查询 - ID 和数据表
Posted
技术标签:
【中文标题】多表连接查询 - ID 和数据表【英文标题】:Multiple table join query - IDs and data tables 【发布时间】:2021-09-09 16:21:52 【问题描述】:SOLVED 原来是我的 where 子句抛出了结果,我改变了这个并将 where 子句添加到 ON 语句中
我需要一些帮助。
我有一个包含 2500 万个 ID 的表和 4 个包含 ID 和数据的表。我需要使用这 2500 万个 ID 以及 4 个表中的关联表数据创建一个新表。每个数据表都不会包含完整的 2500 万个 ID。举个例子;
ID 表:
ID |
---|
A |
B |
表 1
ID | measure_a | measure_b |
---|---|---|
B | 1 | 3 |
表 2
ID | measure_f | measure_g |
---|---|---|
A | 3 | 4 |
等等。
预期输出:
ID | measure_a | measure_b | measure_f | measure_g |
---|---|---|---|---|
A | 3 | 4 | NULL | NULL |
B | NULL | NULL | 1 | 3 |
最重要的是 2500 万个 ID 进入决赛桌。我尝试了多次连接,但最终得到的 ID 数量大大减少,我认为这是由于连接条件不匹配的 ID 被过滤掉了。
非常感谢任何帮助。
【问题讨论】:
【参考方案1】:你会使用left join
s:
select ids.id, t1.measure_a, t1.measure_b, t2.measure_f, t2.measure_g
from ids left join
table1 t1
on ids.id = t1.id left join
table2 t2
on ids.id = t2.id;
【讨论】:
您好,感谢您的回复。这不起作用,因为在查询结束时(在这种情况下,在 4 个左连接之后)当初始 ID 表为 25m 时,我留下了数万条记录。我需要保留所有 ID,加入似乎会丢弃任何不匹配的 ID,即使是左连接也是如此。例如,只关注 1 个左连接,将新表的记录数减少到 830 万 - 随后这是它已连接到的数据表的计数。 我认为这应该可以,请检查一下。看到他正在使用 ids.id 对两个表进行左连接。 我确实在做同样的事情(使用 ID 表中的 ID 作为所有连接的连接条件)。 我发现了这个问题,我的 where 子句过滤器正在使用扳手。将其换出并将条件添加到 ON 语句中修复了它。谢谢。以上是关于多表连接查询 - ID 和数据表的主要内容,如果未能解决你的问题,请参考以下文章
python 之 数据库(多表查询之连接查询子查询pymysql模块的使用)