我有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