Re: update on join ?
От | Frank Bax |
---|---|
Тема | Re: update on join ? |
Дата | |
Msg-id | 4744F8C0.7040106@sympatico.ca обсуждение исходный текст |
Ответ на | update on join ? (Andreas <maps.on@gmx.net>) |
Список | pgsql-sql |
Andreas wrote: > I'd like to update a table efficiently where the relevant select-info > is in another table that is foreign-linked. > > Stupid example. 2 tables: > things (thing_id integer, name varchar(100), color varchar(100)) > inventory (item_id integer, thing_fk integer references things > (thing_id), number) > > For some reason I'd want to set the number of every red item to 0. > This inventory doesn't contain the color but the foreign key to the > other table where the color is found. > > I tried > > UPDATE things JOIN inventory ON things.thing_id = inventory.thing_fk > SET number = 0 > WHERE color = 'red' > > PSQL didn't like the JOIN though. > It works like this: > > UPDATE inventory > SET number = 0 > WHERE thing_fk IN (SELECT thing_id FROM things WHERE color = 'red') > > It's effective but is it efficient, too? What about: UPDATE things, inventory SET number = 0 WHERE color = 'red' AND things.thing_id = inventory.thing_fk
В списке pgsql-sql по дате отправления: