2013-05-30 18 views
0

我有以下表格第一行:加入只引用父表

A   B 
id | a | id | b 
-------- ------- 
1 | . | 1 | 1 
-------- ------- 
2 | . | 1 | 2 
-------- ------- 
3 | . | 2 | 1 
      ------- 
      2 | 2 

B.id是一個外鍵,其上A.id.引用 我想顯示A.id,A.a,B.b.但是來自表A的列應該只與來自表B的引用A.id的第一行連接。我也想選擇表格中的行不具有相應的行表B. 所以結果應該是這樣的:

A.id | A.a | B.b 
---------------- 
    1 | . | 1 
---------------- 
    2 | . | 1 
---------------- 
    3 | . | 

預先感謝任何幫助。

+0

看起來像你需要一個'左join'。你試過什麼了? – Farlan

回答

1

只需使用GROUP BYLEFT JOIN條款:

SELECT A.id, A.a, B.b 
FROM A 
LEFT JOIN B ON B.id = A.id 
GROUP BY A.id 
ORDER BY A.id ASC 
+0

沒有辦法知道你會在Bb列中得到什麼 - 對於A.id = 1它可能是1,但也可能是2 - 它可能導致基於使用的錯誤 – Ochi

+0

我同意,但這恰好符合題。可以使用'SELECT A.id,A.a,MIN(B.b)'代替,但這不是問題的目的。 – zessx

+0

工作。謝謝。 – luke

0

試試這個 - :

SELECT A.id, A.a, B.b 
FROM A 
LEFT JOIN (
      SELECT b1.id, b1.b 
      FROM B b1, B b2 
      WHERE b1.b < b2.b 
     )B 
ON A.id = B.id 
GROUP BY A.id 
ORDER BY A.id asc