Sql 在limit子句中使用count

Sql 在limit子句中使用count,sql,postgresql,Sql,Postgresql,有没有办法在SQL查询的limit子句中使用select计数 原始查询: SELECT * FROM flight_delays LIMIT 10; 但是像这样的动态: SELECT * FROM flight_delays LIMIT ( select count(foo) from bar group by bar.bing ) 你可以做: SELECT fd.* FROM (SELECT fd.*, ROW_N

有没有办法在SQL查询的limit子句中使用select计数

原始查询:

SELECT *
FROM flight_delays
LIMIT 10;
但是像这样的动态:

SELECT
  *
FROM
  flight_delays
LIMIT
  (
    select
      count(foo)
    from
      bar
    group by
      bar.bing
  )
你可以做:

SELECT fd.*
FROM (SELECT fd.*, ROW_NUMBER() OVER () as seqnum
      FROM flight_delays
     ) fd CROSS JOIN
     (select count(foo) as cnt
      from bar
     ) x
WHERE seqnum <= x.cnt;

您可以创建一个函数,该函数将首先计算限制值,然后使用该限制执行查询

您可以这样调用函数:

SELECT * FROM flight_delays_limited();

这是相当不清楚的。请显示示例数据和预期输出好吗?@GMB limit子句中的表达式需要减少到整数evalute到整数您的sql应该可以工作,你能发布当你试图执行它时出现的错误吗?基本上我认为有一种方法可以在limit子句中使用count/sum表达式,它会减少为整数,但根据Postgres文档,limit子句只使用整数和所有表达式。不过,我不知道ALL表达式是如何工作的。
SELECT * FROM flight_delays_limited();