一个表中的Mysql结果尚未在另一个表中填充

时间:2013-12-18 21:08:47

标签: mysql

我想从1个表中获取所有未在另一个表中填充的结果是否可以在查询中使用?我一直尝试使用左连接,但没有用。

表1:users_postcodes 字段:邮政编码

表2:邮政编码 字段:邮政编码

我想从table2获取所有尚未添加到table1的邮政编码。

这是我到目前为止所知道的事实,我知道这是错误的,但任何帮助都会非常有用:

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

2 个答案:

答案 0 :(得分:1)

LEFT JOIN表示" LEFT表中的所有记录,来自右边的任何(任何)匹配记录"。正如您在上面的查询中所写,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子句仅返回DON在T1中具有值的记录。

答案 1 :(得分:0)

  

我想从table2获取所有尚未添加到table1的邮政编码。

试试这个:

SELECT distinct postcode
FROM t2
WHERE postcode NOT IN (Select postcode from t1)
ORDER BY postcode