2013-03-26 77 views
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一排的一個例子之前,我跑我的SQL是:

|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

請通過添加適當的標記(Oracle,SQL Server,MySQL等)來指定您要定位的RDBMS。可能會有利用不被普遍支持的語言或產品功能的答案。此外,通過爲特定的RDBMS添加標籤,您的問題可能會從更適合回答的人那裏得到關注 – Taryn 2013-03-26 18:11:20

回答

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

根據不同的數據庫上,可能有其他的方式來表達此行。但是,這種語法應該適用於大多數數據庫。

+0

這太棒了!非常感謝。 – 2013-03-26 18:46:31