2013-12-18 163 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 
相关问题