我正在尝试使用 if exists 语句,但遇到了一些问题。我正在检查 LOCATION 和 NAME 是否存在于我的 NEWTABLE 中,如果它们不存在,那么我想将它们插入到我的 NewTable 中。所以基本上我试图找到记录存在于旧表但不在新表中的位置和名称。谢谢
这是我的sql
INSERT INTO NewTable(Location, Name)
SELECT Location, Name
FROM OldTable
WHERE Location and Name NOT IN (select Location, Name from NewTable)
最佳答案
为此你可以使用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
);
您还可以通过构建唯一索引来强制执行此约束:
create unique index NewTable_Location_Name on NewTable(Location, Name);
请注意,这会在遇到重复项时导致错误(没有额外检查)。
关于sql - sql中不存在如何使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22046556/