如何使这个SQL任务更快完成

R.D*_*R.D 2 sql sql-server sql-server-2008

假设表1有1,000,000行.在表2中有50,000行

INPUT

表格1

Id    User   InternetAmountDue
1     joe    NULL
Run Code Online (Sandbox Code Playgroud)

表2

InternetUserId   UserName AmountDue
21                kay     21.00
10091             joe     21.00 
Run Code Online (Sandbox Code Playgroud)

我想将表2中的数据合并到表1,如下所示:

  1. 如果表1中存在用户,请更新InternetAmountDue列
  2. 否则,插入新用户

OUTPUT

表格1

Id    User   InternetAmountDue
1     joe    21.00
2     kay    21.00
Run Code Online (Sandbox Code Playgroud)

如果涉及大量数据,如何快速完成?

Qua*_*noi 7

SQL Server 2008MERGE为您的情况提供特殊构造:

MERGE
INTO    table1 AS t1
USING   table2 AS t2
ON      t2.UserName = t1.user
WHEN MATCHED THEN
        UPDATE
        SET    t1.AmountDue = t2.AmountDue
WHEN NOT MATCHED THEN
        INSERT (user, InternetAmountDue)
        VALUES (t2.UserName, t2.AmountDue)
Run Code Online (Sandbox Code Playgroud)