【发布时间】:2011-08-25 14:13:48
【问题描述】:
我将问题与更复杂的查询隔离开来。这里是测试场景
DROP TABLE test;
CREATE TABLE test (
id integer,
description varchar(100)
);
INSERT INTO test(id, description) VALUES (1,'new');
INSERT INTO test(id, description) VALUES (2,'new');
如果我运行查询:
SELECT * FROM test WHERE id IN (UPDATE test set description='test' RETURNING id)
我收到以下错误:
错误:“测试”处或附近的语法错误 LINE 1: SELECT * FROM test WHERE id (UPDATE test set description='test' RE... ^
***费勒 ***
错误:“测试”处或附近的语法错误 SQL 状态:42601 泽臣:37
但是,如果我只运行语句
UPDATE test set value='test' RETURNING id
我得到 2 行的结果:
1 2
如果我替换该结果,我会得到如下查询:
SELECT * FROM test WHERE id IN (1,2);
结果:
1;“测试” 2;“测试”
为什么我的初始语句没有得到相同的结果?
【问题讨论】:
-
它们必须是单独的语句。两行正在更新这一事实可能会导致问题,当不止一行/值返回时,从未尝试过 RETURNING。
标签: sql postgresql