sql - 如何排除sql server insert语句中的行?

标签 sql sql-server tsql insert

我有这样的声明

insert into A (id, nid)
(
    select id, 100 as nid
    from B
    group by id
)

这行得通,但问题是表 A 在 (id, nid) 上有一个主键约束,并且计算的嵌套查询中的一些行已经存在于表 A 中。我如何将它们排除在外在嵌套查询中?

谢谢

最佳答案

你可以使用EXCEPT:

insert into A (id, nid)
select id, 100 as nid
from B
group by id
EXCEPT
SELECT id, nid
FROM A;

关于sql - 如何排除sql server insert语句中的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45867492/

相关文章:

mysql - 如何选择价格高于 'Movie3' 的标题和价格

sql - 我想要一个查询来获取 postgres 中用户平均值的列表

sql - 从另一个表创建一个表

sql - 当数据库被移动到另一个服务器/实例时如何识别它

sql-server - 为什么在我的存储过程中将整数传递给小数时会出错?

PL/SQL 中的 SQL 注入(inject) - 神话还是事实?

sql - 比较一张表中的两个选择值

sql-server - AdventureWorks 无法创建 ado.net 实体数据模型

tsql - 在用户定义的函数中 try catch ?

sql-server - 如何将序列号连接到不相关的数据 (SQL Server)