2013-12-18 124 views
0

我想從一個未填充到另一個表的所有結果中查找這可能嗎?我一直在嘗試左連接,但無濟於事。Mysql從一個表中未填充另一個表的結果

表1:users_postcodes 現場:郵編

表2:郵政編碼 現場:郵編

我想所有的這些還沒有被添加到表1表2的郵政編碼。

這是我到目前爲止,我知道一個事實,它的錯,但任何幫助將是非常有益的:

SELECT t1.*, 
t2.`postcode` AS `nouser_postcode` 
FROM `postcodes` AS t1 
LEFT JOIN `users_postcodes` AS t2 on t2.`postcode` != t1.`postcode` 

回答

1

LEFT JOIN的意思是「左表中的所有記錄,任何(任意)匹配右邊的記錄「。正如您在上面的查詢中所寫,LEFT表格是postcodes,因爲它在FROM條款中。您的加入表users_postcodes是正確的手柄表。

你真的想要一個RIGHT加入代替:所有從users_postcodes沒有在郵政編碼匹配的記錄中的記錄:

SELECT t1.*, t2.postcode 
FROM postcodes AS t1 
RIGHT JOIN users_postcodes AS t2 ON t2.postcode = t1.postcode 
WHERE t1.postcode IS NULL 

這將從users_postcodes表拉起的所有記錄,試圖與它們匹配對用戶的任何記錄。但是,由於您正在查找不匹配的記錄,因此您使用WHERE子句僅返回在t1中沒有值的記錄。

+0

我所有的成績繼續回來爲NULL?那麼我得到1結果與所有列說NULL – neoszion

+0

我的壞它很好,謝謝。 – neoszion

0

我想從table2中獲取所有未添加到table1的郵編。

試試這個:

SELECT distinct postcode 
FROM t2 
WHERE postcode NOT IN (Select postcode from t1) 
ORDER BY postcode 
相關問題