sql - sql中不存在如何使用

标签 sql sql-server tsql

我正在尝试使用 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/

相关文章:

mysql - MySQL 中将多个字段合并为一个且具有明确标签

sql - HIVE 检查表 1 中的数据,而表 2 中没有

MySQL返回一个Group By Functions表?

sql-server - 如何在mssql中编写IF(expr1,expr2,expr3)

MYSQL date_format '%x-%u' 等同于 SQL Server

SQL Group By 函数结合 SUM

java - 如何在 spring data jpa 中为自定义采石场提供可变参数而不使用 for 循环

sql-server - SQL存储过程-表作为参数

sql-server - 将 'throw' 输出存储到变量中

LIKE 之间的 SQL Server 日期