RE: [SQL] Update problem I cannot work out
От | Michael J Davis |
---|---|
Тема | RE: [SQL] Update problem I cannot work out |
Дата | |
Msg-id | 93C04F1F5173D211A27900105AA8FCFC145461@lambic.prevuenet.com обсуждение исходный текст |
Ответы |
Re: [SQL] Update problem I cannot work out
|
Список | pgsql-sql |
Try something like: Create function new_function(value_data_type) 'Select sum(t1.var1) from t1 where t1.var2 = $1' LANGUAGE 'sql'; update t2 set var1=t2.var1+new_function(t2.var2); -----Original Message-----From: M Simms [SMTP:grim@argh.demon.co.uk]Sent: Saturday, May 01, 1999 8:26 PMTo: pgsql-sql@postgreSQL.orgSubject: [SQL] Update problem I cannot work out 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 t1that 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 tosum(), but I cannot for the life of me figure out howto 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 performedUPDATE1 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 theright 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 amsure I am just missing something blindingly obvious.I am loathe to use a cursor to do this, because my actual dataset isupwardsof 10,000 records, and I do not wish to do 10,000 differentqueries.
В списке pgsql-sql по дате отправления: