我可以在带有返回子句的更新查询中限制返回的行数吗?例如,我运行一个更新查询并更新了一百万条记录,但我不想将更新后的一百万行返回到结果集中...只返回样本,比如1000条记录。这可能吗?
我的查询:
UPDATE table1 SET col1 = value1 RETURNING *
我希望获取更新后的列数以及更新后的1000行样本。
我可以在带有返回子句的更新查询中限制返回的行数吗?例如,我运行一个更新查询并更新了一百万条记录,但我不想将更新后的一百万行返回到结果集中...只返回样本,比如1000条记录。这可能吗?
我的查询:
UPDATE table1 SET col1 = value1 RETURNING *
with updated as (
update the_table_with_many_rows
set some_column = 42
where ...
returning *
)
select u.*,
count(*) over () as total_update_count
from updated as u
limit 1000;
WITH updates AS (
UPDATE my_table SET (f1, f2, f3) = (v1, v2, v3)
WHERE some_condition
RETURNING *)
SELECT * FROM updates
LIMIT 1000;
但是,如果你不能在外部查询中使用排序,那么你无法控制返回哪些1000行数据。