首页 > 数据库 > mysql教程 > PostgreSQL 是否支持'TOP n WITH TIES”功能?

PostgreSQL 是否支持'TOP n WITH TIES”功能?

Patricia Arquette
发布: 2024-12-29 22:22:23
原创
511 人浏览过

Does PostgreSQL Support `TOP n WITH TIES` Functionality?

LIMIT with Ties:PostgreSQL 实现了吗?

在 SQL Server 中,语法 TOP n WITH TIES 检索前 n 行以及任何捆绑的行。然而,PostgreSQL 用户可能想知道是否有等效的语法。

PostgreSQL 的解决方案:WITH TIES (PostgreSQL 13)

从 PostgreSQL 13 开始,WITH TIES 子句是介绍了。此子句的行为与其 SQL Server 对应子句类似,获取前 n 行以及任何关联行。

PostgreSQL 12 及更早版本的替代方案

在 PostgreSQL 13 之前,有与 TOP n with TIES 没有直接等价物。一种解决方法是执行以下查询:

WITH cte AS (
   SELECT *, rank() OVER (ORDER BY <something>) AS rnk
   FROM   tbl
   )
SELECT *
FROM   cte
WHERE  rnk <= n;
登录后复制

这里,rank() 为每一行分配一个排名,并包括与最后排名 n 相关的行。

示例

考虑一个值为 {10, 9, 8, 8, 2} 的 Numbers 表。以下查询将使用 PostgreSQL 12 及更早版本的替代方法返回 {10, 9, 8, 8}:

WITH cte AS (
   SELECT nums, rank() OVER (ORDER BY nums DESC) AS rnk
   FROM   Numbers
   )
SELECT *
FROM   cte
WHERE  rnk <= 3;
登录后复制

注意: 此替代方案中使用的rank()函数与dense_rank()不同,因为后者会返回太多行而产生不正确的结果。

以上是PostgreSQL 是否支持'TOP n WITH TIES”功能?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板