我需要基于make-model-serial数字组合构建一个查询,该查询将向我显示表1中的记录,但表2中没有的记录。
我实际上知道有4条记录是不同的,但是我的查询总是回到空白。
SELECT * FROM Table1 WHERE MAKE+MODEL+[Serial Number] NOT IN (SELECT make+model+[serial number] FROM Table2)
表1有5条记录。
当我将查询更改为时IN,我得到1条记录。我在做什么错了NOT?
IN
NOT
这是因为NOT IN的工作方式。
为了避免出现这些麻烦(并且在许多情况下可以更快地进行查询),我总是更喜欢“不存在”(NOT EXISTS):
SELECT * FROM Table1 t1 WHERE NOT EXISTS ( SELECT * FROM Table2 t2 WHERE t1.MAKE = t2.MAKE AND t1.MODEL = t2.MODEL AND t1.[Serial Number] = t2.[serial number]);