2013-03-26 5 views
0
UPDATE 
    TABLE_1 
SET 
    COL_1 = (
      SELECT 
       SUM(TOT) 
      FROM 
       TABLE_2 
      ) 
WHERE 
    CUST_NO = TABLE_2.CUST_NO 

Итак, это мой SQL до сих пор. По сути, я пытаюсь обновить COL_1 в TABLE_1, чтобы быть суммой TOT, сохраненной в TABLE_2. Я пытаюсь обновить это на CUST_NO из обеих таблиц.SQL Update Несколько строк

Я знаю, что мой код вообще не работает, но я действительно не знаю, как это сделать.

Так пример одной строки из 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 и т. Д.). Могут быть ответы, которые используют преимущества языка или функций продукта, которые не поддерживаются повсеместно. Кроме того, пометив его конкретными РСУБД, ваш вопрос может получить внимание от людей, более подходящих для ответа на него – Taryn

ответ

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

Это замечательно! Спасибо. –

Смежные вопросы