我有 3 个(MYSQL)表,A、B 和 C。
我想做的是这样的:
SELECT * FROM a
LEFT JOIN b ON b.a_id = a.id
LEFT JOIN c on c.a_id = a.id
WHERE a.id = 1;
我在 B 表上有 4 个条目,其中 B.a_id = 1:
B.id | b.a_id
1 | 1
2 | 1
3 | 1
4 | 1
我在 C 表上也有 2 个这样的条目
C.id | C.a_id
10 | 1
11 | 1
返回结果为 8 个:
C.id | B.id
10 | 1
10 | 2
10 | 3
10 | 4
11 | 1
11 | 2
11 | 3
11 | 4
有没有办法让结果不重复相同的 C 和 B 对象,并返回更像这样的东西?
C.id | B.id
10 | 1
11 | 2
NULL | 3
NULL | 4
换句话说,我想说“给我所有映射到 A=1 的东西,但不要重复相同的 C 或 B 两次”。在我的实际数据中,我连接了接近 10 个表,并且所有连接表的所有排列,结果通常有数千行长。
这里有一个类似的问题Connecting Multiple Tables in SQL while Limiting Exponential Results,但我想尽可能避免内部选择。我觉得这是对数据库的一种足够普遍的使用,应该有