我有2个表,我试图根据从列与特定值匹配的另一个表中提取行id来更改特定列的值 .
表1(cc_show)包含列(background_color),如果表2(cc_show_instances)列'记录'或列'rebroadcast'等于1,我想将此值更改为固定值(ff0000) .
此外,对于表2中的所有列(cc_show_instances),其“记录”或“重新广播”列不等于1,我想将表1中的相应id更改为0000ff .
我可以使用以下命令在表2(cc_show_instances)中搜索所有正结果:
SELECT DISTINCT show_id
FROM cc_show_instances
WHERE rebroadcast = 1
OR record = 1
我尝试将此作为包含在WHERE选项中的SELECT,如下所示:
UPDATE cc_show
SET background_color = 'ff0000'
WHERE id = (SELECT DISTINCT show_id
FROM cc_show_instances
WHERE rebroadcast = 1 OR record = 1);
但是这会返回错误:
ERROR:用作表达式的子查询返回的多行
我假设是因为它没有迭代结果 . 我怎样才能达到预期的效果?
1 回答
你在评论中被告知
IN
.更好的是,加入FROM clause中的第二个表 . 这有点短,
IN
也不适合大集(至少在Postgres 8.4 - 9.2的测试中) .