SQL更新多行

时间:2013-03-26 18:04:36

标签: sql sql-server sql-update

UPDATE
  TABLE_1
SET
  COL_1 = (
             SELECT
               SUM(TOT)
             FROM
               TABLE_2
           )
WHERE
  CUST_NO = TABLE_2.CUST_NO

所以,到目前为止,这是我的SQL。基本上,我试图将TABLE_1中的COL_1更新为TABLE_2中存储的TOT的总和。我试图从两个表中的CUST_NO上更新它。

我知道我的代码根本不起作用,但我真的不知道如何做到这一点。

因此,在运行SQL之前,TABLE_1中的一行示例将是:

|CUST_NO |COL_1|
|1000    |null |
|1001    |null |

和TABLE_2:

|CUST_NO |TOT  |
|1000    |15   |
|1000    |17   |
|1001    |13   |
|1001    |12   |

我最终想要/需要的是什么:

TABLE_1:

|CUST_NO |COL_1|
|1000    |32   |
|1001    |25   |

1 个答案:

答案 0 :(得分:3)

这可能是你想要的:

UPDATE TABLE_1
    SET COL_1 = (SELECT SUM(TOT)
                 FROM TABLE_2
                 WHERE  table_1.CUST_NO = TABLE_2.CUST_NO    
                )

这假设您要更改所有行。否则,试试这个:

UPDATE TABLE_1
    SET COL_1 = (SELECT SUM(TOT)
                 FROM TABLE_2
                 WHERE  table_1.CUST_NO = TABLE_2.CUST_NO    
                )
where exists (select 1 from table_2 WHERE  table_1.CUST_NO = TABLE_2.CUST_NO)

仅更改table1中客户编号位于表2中的行。

根据数据库的不同,可能还有其他方式来表达这一点。但是,此语法应适用于大多数数据库。