我想在表格中插入一堆列信息。
e.g。
INSERT INTO TABLE
(AID, BID, CID, INT)
SELECT AID, BID, CID
FROM ANOTHERTABLE
WHERE X
我想在我的insert中添加一个子句:其中只有当AID和BID DON&T已存在于同一行时才插入。
我无法执行where != AID
,因为AID存在于同一行中具有不同BID的不同行中。
但我需要保留AIB和BID的一个组合。
因此,我不想在同一行上重复AIB和BID行。
我试过rowA != AID AND rowB != BID
,但这意味着表中不存在AID和BID的第一行。我只需要一个AID和BID的组合。
答案 0 :(得分:1)
此解决方案使用WHERE EXISTS NOT()
检查目标表中的两个值。
如果AID或BID可以具有NULL值,则应使用ISNULL()
处理。
INSERT INTO TABLE
(AID, BID, CID, INT)
SELECT
AID, BID, CID -- problem here - where is value for INT?
FROM ANOTHERTABLE
WHERE NOT EXISTS
(
SELECT
AID, BID
FROM TABLE
-- WHERE TABLE.AID & BID ... Wrong (thank you Gareth Lyons)
WHERE TABLE.AID = ANOTHERTABLE.AID
AND TABLE.BID = ANOTHERTABLE.BID
)