0
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   |

而我最终想要/需要的:

表格1:

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

1 回答 1

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)

只需更改表 1 中的客户编号在表 2 中的行。

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

于 2013-03-26T18:10:38.350 回答