Update problem I cannot work out
От | M Simms |
---|---|
Тема | Update problem I cannot work out |
Дата | |
Msg-id | 199905020225.DAA14465@argh.demon.co.uk обсуждение исходный текст |
Список | pgsql-sql |
I cannot work out how to do the following query testdb=> select * from t1; var1|var2 ----+---- 1| 2 2| 2 2| 3 (3 rows) testdb=> select * from t2; var1|var2 ----+---- 5| 2 9| 3 4| 4 (3 rows) I need to add to the value of each var1 in t2 the sum of all var1's in t1 that have the same value corresponding var2's testdb=> update t2 set var1=t2.var1+sum(t1.var1) where t1.var2=t2.var2; ERROR: parser: illegal use of aggregates or non-group column in target list I imagine that this is failing because it isnt sure which values to sum(), but I cannot for the life of me figure out how to solve this. My second idea was to do testdb=> update t2 set var1=t2.var1+t1.var1 where t2.var2=t1.var1; NOTICE: Non-functional update, only first update is performed UPDATE 1 This will only, obviously, add one of the values I need to add. The values I need to end up with, just so you know you are solving the right problem, are: testdb=> select * from t1; var1|var2 ----+---- 1| 2 2| 2 2| 3 (3 rows) testdb=> select * from t2; var1|var2 ----+---- 8| 2 11| 3 4| 4 (3 rows) Any help on this would be appreciated. I am a bit stuck here, and I am sure I am just missing something blindingly obvious. I am loathe to use a cursor to do this, because my actual dataset is upwards of 10,000 records, and I do not wish to do 10,000 different queries.
В списке pgsql-sql по дате отправления: