Re: Bug or syntax error in my update query with a FROM statement ?
От | ARP |
---|---|
Тема | Re: Bug or syntax error in my update query with a FROM statement ? |
Дата | |
Msg-id | 030301c1eb96$8d9a3580$0100a8c0@arp.homelinux.org обсуждение исходный текст |
Ответ на | Bug or syntax error in my update query with a FROM statement ? ("ARP" <arnaud.mlist1@free.fr>) |
Ответы |
Re: Bug or syntax error in my update query with a FROM statement ?
|
Список | pgsql-general |
Thanks for your reply. I would tend to agree with you but why doesn't it update ANY row when count() equals zero then, and ALL rows only when thecount is not zero ? I would agree with you if ALL rows were updated in any case or did I miss something ? Arnaud >The first query SHOULD update all rows, because there is NO restriction >on the utilisateur table - a.login <> '*' is NOT the same as >utilisateur.login <> '*' - the former qualifies the FROM clause, and the >latter applies to the UPDATE itself. >"Dima Tkach" <dmitry@openratings.com> a écrit dans le message de news: 3CC6A7AF.3070801@openratings.com... >> Here's the "wrong" query : >> update utilisateur set login='*', password='*' from utilisateur a, ancien b where a.util_id=b.util_id and b.anc_decesis not null and >(a.login<>'*' or a.password<>'*'); >> >> Here's the "correct" one : >> update utilisateur set login='*', password='*' from ancien b where utilisateur.util_id=b.util_id and b.anc_deces is notnull and >(utilisateur.login<>'*' or utilisateur.password<>'*'); >> >> Both queries work the same when there's nothing to update, (i.e. select count(*) from utilisateur a, ancien b where >a.util_id=b.util_idand b.anc_deces is not null and (a.login<>'*' or a.password<>'*') returns 0). >> But the first one ("wrong") updates ALL rows of table 'utilisateur' when the above count() is not 0, where the secondone >("correct") updates only the rows needed. >> >> What's wrong with the first query : me or the parser ? I guess the problem comes from the fact that table 'utilisateur'appears twice and is aliased which may confuse the parser in the "wrong" query... >>
В списке pgsql-general по дате отправления: