ホームページ > データベース > mysql チュートリアル > PostgreSQL は「TOP n WITH TIES」機能をサポートしていますか?

PostgreSQL は「TOP n WITH TIES」機能をサポートしていますか?

Patricia Arquette
リリース: 2024-12-29 22:22:23
オリジナル
503 人が閲覧しました

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 に直接相当するものではありませんでした。回避策の 1 つは、次のクエリを実行することです。

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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート