在 postgresql 中使用动态限制

Using dynamically limit in postgresql

我想用

select * from table limit x;

这个x可以动态变化。我不想使用数字。有使用参数限制的解决方案吗?

当然可以。我自己从来不需要但是:

SELECT * FROM some_table LIMIT (SELECT a_limit FROM other_table);

显然子查询应该只有 return 一行。

为了进一步扩展 Richard Huxton 的回答,这可以用在 LATERAL 子查询中,例如动态限制 K-最近邻查询:

SELECT loc_id, num_neighbours, neighbour_id
FROM locations,
LATERAL (SELECT neighbour_id 
         FROM neighbours 
         ORDER BY ST_distance(locations.geom, neighbours.geom) 
         LIMIT num_neighbours) knn