2014-02-25 28 views
-2

我有兩個表..我需要從左側表中獲取所有行,但只有從右側表中匹配的行..我怎樣才能得到從左側的所有行和右側表中只有匹配的行

Left table: tbl_BT 

BT_Id Name  
1  A 
2  B 
3  C 
4  D 
5  E 

右表:tbl_Rc

Rc_ID Country BT_Id 
1  Con1  1 
2  Con2  2 
3  Con3  5 

結果表:

BT_Id Name Rc_Id Country 
1  A  1  Con1 
2  B  2  Con2 
3  C  -  - 
4  D  -  - 
5  E  3  Con3 

請幫我弄這個。

+1

使用第一個和第二個表之間的左連接 – wxyz

+0

當我使用左連接它只是返回值在表2中呈現。 – user10489

+0

如果你有像你這樣的表顯示在這裏比它會工作,檢查你是否寫了左連接錯誤 – enigmaticus

回答

1

所以,你需要的是一個LEFT JOIN

SELECT bt.BT_Id as BT_Id,bt.Name as Name , 
    IFNULL(rc.Rc_ID,"-") as Rc_Id,IFNULL(rc.Country,"-") as Country 
FROM tbl_BT bt LEFT JOIN tbl_Rc rc 
ON bt.BT_Id=rc.BT_Id 

IFNULL()是如果你有正確的表格空值,所以你必須顯示-代替null

+0

'select *'將給出兩個表中的所有列,但是OP要求只有* some *的列 – Bohemian

+0

,同時我改變了它 – enigmaticus

1

嘗試......

SELECT tbl_BT.BT_Id,Name,Rc_Id,Country from tbl_BT 
left join tbl_Rc on tbl_BT.BT_Id = tbl_Rc.BT_Id 
+0

left join沒有返回所需的輸出。它只返回tbl2中存在的三條記錄。 – user10489

+0

@ user10489我嚴重懷疑這一點。你確定*你是在''而不是'在哪裏'編碼的? – Bohemian

+0

我只給了它示例代碼..但我原來的表沒有返回所需的結果..感謝您的評論。 – user10489