2009-11-09 159 views
3

我想知道,有沒有一種方法,使一種一對一的左外連接:ONE TO ONE LEFT OUTER JOIN

我需要加入該場比賽說表A和B表,每個記錄上表A必須在表B上搜索它的對,但是隻存在一條匹配該條件的記錄,因此當它在B上找到它的對時,它必須停止並繼續在表A的下一行。

什麼我有一個簡單的左外連接。

select * from A LEFT OUTER JOIN B ON A.ID = B.ID ORDER BY (NAME) ASC 

在此先感謝!

+1

這是在數據庫中定義的一對一關係,還是B可以包含N個基於外鍵的與A關聯的記錄? – Josh 2009-11-09 20:15:19

+1

你的左連接有什麼問題? – 2009-11-09 20:15:35

+0

是一對一的定義關係Josh – Sheldon 2009-11-09 20:19:55

回答

3

您在問題中顯示的語法是正確的。加入一對一關係的查詢與一對多沒有區別。

1

SQL不能這樣工作。首先,它並不是逐行看待事物。第二位是什麼定義你想匹配的記錄?

假設你真的不關心哪一行selcted,這樣的事情可能工作:

SELECT * 
From tableA 
left outer join 
(select b.* from tableb b1 
join (Select min(Id) from tableb group by id) b2 on b1.id - b2.id) b 
on a.id = b.id 

,但它仍然是很玄乎,你西港島線得到你想要的,當有多個記錄與記錄表b中的id。

+0

嗨HLGEM,我忘記說,在這兩種情況下,JOIN條件下的標識符是唯一的。謝謝 – Sheldon 2009-11-09 20:16:17

+0

-1錯過了問題的要點。你使問題過度複雜化。 – 2009-11-09 20:22:18