仅当表

时间:2017-01-12 16:34:11

标签: sql

我想在表格中插入一堆列信息。

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的组合。

1 个答案:

答案 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
    )