我想根据PostgreSQL
UPDATE tableX
SET columnX = 100
WHERE id = (SELECT ID FROM tableY WHERE col1 = 'Y' AND col2 = 'Z');
问题是:
选择查询可以返回多行
。如何仅使用一个查询更新表?
答案 0 :(得分:3)
使用IN
代替=
:
update tableX
set columnX = 100
where id IN (select id from tableY where col1 = 'Y' and col2 = 'Z');
答案 1 :(得分:2)
您可以检查ID是否在返回的列表中。
update tableX
set columnX = 100
where id in (select id from tableY where col1 = 'Y' and col2 = 'Z');
答案 2 :(得分:2)
为了完整性:
您首先不需要使用子查询。你也可以使用:
update tableX
set columnX = 100
from tableY
where tableX.id=tableY.id
and tableY.col1 = 'Y'
and tableY.col2 = 'Z';