【发布时间】:2019-12-29 05:49:43
【问题描述】:
我可以运行下一个 sql 脚本一次,使用来自 2 个不相关表的信息插入一些行:
INSERT INTO CompanyCarType (Name, CompanyId, LastModDateTime, LastModUserId)
SELECT T.Name, C.Id , GETDATE() LastModDateTime, C.LastModUserId
FROM CarType T
CROSS JOIN Company C
但是,我需要能够多次运行此脚本而不插入重复项,或者在我的情况下失败,因为该表不允许重复 CompanyId
和Name。
所以我尝试使用WHERE NOT EXISTS,但是由于SELECT语句中有2个表,我不能使用别名来引用它,并且语法不正确。
INSERT INTO CompanyCarType (Name, CompanyId, LastModDateTime, LastModUserId)
SELECT T.Name, C.Id , GETDATE() LastModDateTime, C.LastModUserId
FROM CarType T
CROSS JOIN Company C) AS T1
WHERE NOT EXISTS (SELECT Name
FROM CompanyCarType T2
WHERE T2.Name = T1.Name)
在 SELECT 子句中使用一个表的例子很多,但没有一个使用 2 个或更多表的例子。
谢谢!
【问题讨论】:
标签: sql-server sql-insert not-exists