迭代比较2个表

时间:2015-07-09 06:33:12

标签: sql sql-server compare

我有一个包含tbl_userlogin列的表devicelogin是唯一ID,device是一个更改的整数。 我在这里要完成的是使用新表device归档每个login的所有tbl_user_arhcive

E.g。对于login = 201530device值在当前时间为123456。如果指定的tbl_user_archive存在特定设备值,我需要检查login。如果它存在,那么我将不会插入它,否则我将其插入tbl_user_archive。这样我将保存一个存档,其中包含登录所有的设备值(唯一)。

我不知道如何开始。我在SO上发现了一些类似的问题,但他们并没有帮助我理解如何解决这个问题。

Link1

Link2

1 个答案:

答案 0 :(得分:1)

您可以使用NOT EXISTS

INSERT INTO tbl_user_archive(login, device)
    SELECT DISTINCT 
        login, 
        device
    FROM tbl_user tu
    WHERE NOT EXISTS(
        SELECT 1
        FROM tbl_user_archive
        WHERE login = tu.login
        AND device = tu.device
    )

如果您对login, device上的tbl_user有唯一约束,那么您可以删除DISTINCT,因为它只会添加额外的DISTINCT SORT操作,并会增加执行时间