我有3个(MYSQL)表中,A,B和CSQL连接多个表,而不用返回相同的加盟ID两次
我想要做的是这样的:
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.a_id的乙表4名的条目= 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,但我想尽量避免内部选择。我觉得这是一个常见的使用数据库的应该是
谢谢!
DISTINCT是否适合您? – 2013-05-07 15:56:49
在你理想的返回值中,你是不是把C = 10和B = 1任意放在同一行上?为什么?也许C = NULL和B = 1,2,3,4和B = NULL并且C = 1,2会更有意义? – mikey 2013-05-07 15:59:47
我对这个关键字很熟悉,但我不确定如何在这里以一种有用的方式在上下文中使用它。如果我只是做SELECT DISTINCT(*),那不能解决问题。 – user2008476 2013-05-07 16:05:03