在 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
我想用
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