2016-09-17 3 views
0

Вот таблица t1Обновление строк, имеющих тот же идентификатор и имя

id name amount close 
1 jon 4000 0 
1 jon 5000 0 
1 jon 9000 0 

я хочу сумму суммы в конце колонны близко

id name amount close 
1 jon 4000 0 
1 jon 5000 0 
1 jon 9000 18000 

Я пытаюсь обновить близко

update t1 set close = (select sum(amount) from t1 where id = '1' group by id) 

, но этот вопрос обновить все строки близки следующим образом

id name amount close 
1 jon 4000 18000 
1 jon 5000 18000 
1 jon 9000 18000 

ответ

0

Я думаю, что вы хотите, связанный подзапрос:

update t1 
    set close = (select sum(t11.amount) 
       from t1 t11 
       where t1.id = t11.id 
       ); 

Однако, это все равно будет обновлять все строки. Вам просто нужен последний. Ну, в SQL строки неупорядочены, но SQLite предлагает rowid. Это позволяет:

update t1 
    set close = (select sum(t11.amount) 
       from t1 t11 
       where t1.id = t11.id 
       ) 
    where rowid = (select max(rowid) 
        from t1 t11 
        where t1.id = t11.id 
       ); 
0

Попробуйте следовать.

Update [Temp_Table] 
     set [Temp_Table].[close] = (Select sum(amount) from [Temp_Table] where id=1 group by ID) 
     where amount = (Select max(amount) from [Temp_Table] group by id) 
0

Вы можете попробовать это так:

UPDATE testing1 a 
INNER JOIN (SELECT MAX(amount) maxi, 
      SUM(amount) tot FROM testing1) b ON b.maxi = a.amount 
SET a.close = b.tot 
Смежные вопросы