sql - 在限制子句中使用计数
问题描述
有没有办法在 SQL 查询的限制子句中使用 select count()?
原始查询:
SELECT *
FROM flight_delays
LIMIT 10;
但是像这样动态的东西:
SELECT
*
FROM
flight_delays
LIMIT
(
select
count(foo)
from
bar
group by
bar.bing
)
解决方案
您可以创建一个函数,该函数将首先计算 的值,LIMIT
然后使用 that 执行查询LIMIT
。
CREATE OR REPLACE FUNCTION flight_delays_limited()
RETURNS setof flight_delays
$$
DECLARE
limitSize INTEGER = 0;
BEGIN
--custom logic for calculating the limit
select
count(foo) into limitSize
from
bar
group by
bar.bing;
--end custom logic
--return result from select with calculated limit
RETURN QUERY
SELECT * FROM flight_delays
LIMIT limitSize;
end;
$$ language plpgsql;
您可以像这样调用该函数:
SELECT * FROM flight_delays_limited();
推荐阅读
- macos - 如何在 JXA 中获取(地址 id 包含 addressId 的人)?
- scala - 递归函数的优化
- python - beautifulsoup 错过了网页的其余部分
- python - 如何从两个现有的单索引数据帧创建多索引数据帧?
- javascript - Uncaught Invariant Violation:重新渲染太多。React 限制渲染次数以防止无限循环
- java - Java Bresenham 线到圆周上的点
- model - 添加状态“待批准”Odoo 12
- r - R中组的每变化增加一
- python - 单个数据框单元格中系列的最大值
- swing - 如何删除 Swing 的 JTextPane 中链接标记内的图像周围的边框?