我想从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`
答案 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