【发布时间】:2020-03-03 11:35:37
【问题描述】:
我想加入几张桌子:
table1:
A B_key B_version C D
123 abc 1 ccc 11
123 abc 2 ddd 11
456 dfg 1 rrr 22
789 vvv 1 55
table2:
A E F
123 s 5
456 r
111 t 2
table3:
B_key B_version G
abc 1 aa
abc 1 bb
abc 2 aa
abc 2 cc
dfg 1 aa
所以结果应该是这样的:
A B_key B_version C D E F G
123 abc 1 ccc 11 s 5 aa
123 abc 1 ccc 11 s 5 bb
123 abc 2 ddd 11 s 5 aa
123 abc 2 ddd 11 s 5 cc
456 dfg 1 rrr 22 r aa
789 vvv 1 55
版本最高可达 8。
如果我没有 A、B_key 或 B_version - 该行是无用的。否则我需要保留我所拥有的所有信息。
实际上我还有很多专栏。
我试过了:
SELECT table1.A, table 1.B_key, table 1.B_version, table 1.C, table 1.D,
table2.E, table2.F,
table3.G
FROM table1
LEFT JOIN table2
ON table1.A = table2.A
LEFT JOIN table3
ON table1.B_key = table3.B_key AND
table1.B_version = table3.B_version
与 FULL JOIN 相同。
结果是一样的:对于每个 B_key,只保留最高的 B_version,而其他的则消失。
如何避免丢失信息?
【问题讨论】:
-
在发布您实际尝试过的内容之前,您的问题并不清楚!
-
最后添加的查询已经按预期工作,并给出了预期的结果。看看this。
标签: sql join multiple-columns