如果在sql中不存在则如何使用

moe*_*moe 2 sql t-sql sql-server

我试图使用if exists语句,但有一些问题.我正在检查我的NEWTABLE中是否存在LOCATION和NAME,如果它们不存在,那么我想将它们插入到我的NewTable中.所以基本上我试图找到位置和名称,其中记录存在于OldTable中而不是在newTable中.谢谢
这是我的sql

INSERT INTO NewTable(Location, Name)
            SELECT Location, Name
            FROM OldTable
            WHERE Location and Name NOT IN (select Location, Name from NewTable)
Run Code Online (Sandbox Code Playgroud)

Gor*_*off 6

你会用not exists这个:

INSERT INTO NewTable(Location, Name)
        SELECT Location, Name
        FROM OldTable ot
        WHERE NOT EXISTS (select 1
                          from NewTable nt 
                          where nt.LOCATION = ot.LOCATION and nt.NAME = ot.NAME
                         );
Run Code Online (Sandbox Code Playgroud)

您还可以通过构建唯一索引来强制实施此约束:

create unique index NewTable_Location_Name on NewTable(Location, Name);
Run Code Online (Sandbox Code Playgroud)

请注意,遇到重复项时,这会导致错误(无需额外检查).