2012-02-07 82 views
8
TABLE A >> 
uid name 
1 test1 
2 test2 
3 test3 
4 test4 

TABLE B >> 
uid address 
1 address1 
2 address2 
4 address3 

RESULT 
1 test1 address1 
2 test2 address2 
3 test3 
4 test4 address3 

任何人都可以告訴我如何編寫查詢並獲取上面的結果,非常感謝! 我曾嘗試加入,左和右加入。所有結果都沒有。sql加入兩張表

+0

W¯¯你有沒有試過你的連接?即給予嘗試? – 2012-02-07 06:34:28

回答

15

你可以寫左外這兩個表的最佳方式之間的連接,瞭解被檢查下面的圖片

查詢您的需求

SELECT A.uid, A.name, B.address FROM A LEFT JOIN B ON A.uid=B.uid 

閱讀本原創文章的代碼項目將幫助你很多:Visual Representation of SQL Joins

alt text

尋找在原來的:Difference between JOIN and OUTER JOIN in MySQL

+0

這些是設置操作的圖示,而不是連接例如左邊的一個是'A UNION B',中間的是'A INTERSECT B'等。 – onedaywhen 2012-02-07 08:26:42

+0

我喜歡你的圖表,很好地解釋一切。非常感謝 – Bruce 2012-02-07 23:05:19

1

你說你嘗試了左加入,但並未給出任何企圖---第一個邏輯的嘗試之一將是:

SELECT A.uid, A.name, B.address 
FROM A 
LEFT JOIN B ON A.uid=B.uid 

變戲法似的!它會給你你以後的樣子。

2
SELECT A.uid, A.name, B.address FROM A LEFT OUTER JOIN B ON A.uid = B.uid 
1

您可以使用任何join.I編寫此查詢以進行完全連接。

select A.uid,A.name,B.address from A FULL JOIN B ON A.uid = B.uid 
1

我想你一個空值之後是如果對於B沒有價值,即具有在A.相同的UID

如果是這樣的話,IFNULL將返回默認值萬一指定的參數爲空(ISNULL在MSSQL使用):

SELECT A.value, IFNULL(B.value, '') 
FROM A LEFT JOIN B 
ON A.uid = B.uid 

這將產生類似:

test1 address1 
test2 address2 
test3 
test4 address3