Postgresql "update query returning *" 有限制
Postgresql "update query returning *" with limit
我可以 运行 一个带有 return 子句的更新查询并限制行 returned 吗?例如,我 运行 一个 udate 查询,它更新了一百万条记录,但我不想让更新的一百万行返回结果集..只是一个例子说 1000 条记录。这可能吗?
我的查询:
UPDATE table1 SET col1 = value1 RETURNING *
我想获取更新后的列数和更新后的 1000 行样本。
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;
您可以使用 CTE:
WITH updates AS (
UPDATE my_table SET (f1, f2, f3) = (v1, v2, v3)
WHERE some_condition
RETURNING *)
SELECT * FROM updates
LIMIT 1000;
但是,您无法控制将返回哪 1,000 行,除非您可以在外部查询中使用某种排序。
我可以 运行 一个带有 return 子句的更新查询并限制行 returned 吗?例如,我 运行 一个 udate 查询,它更新了一百万条记录,但我不想让更新的一百万行返回结果集..只是一个例子说 1000 条记录。这可能吗?
我的查询:
UPDATE table1 SET col1 = value1 RETURNING *
我想获取更新后的列数和更新后的 1000 行样本。
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;
您可以使用 CTE:
WITH updates AS (
UPDATE my_table SET (f1, f2, f3) = (v1, v2, v3)
WHERE some_condition
RETURNING *)
SELECT * FROM updates
LIMIT 1000;
但是,您无法控制将返回哪 1,000 行,除非您可以在外部查询中使用某种排序。