一尘不染

SQL Server-不在

sql

我需要基于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


阅读 136

收藏
2021-03-17

共1个答案

一尘不染

这是因为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]);
2021-03-17