PostgreSQL's Equivalent to SQL Server's TOP n WITH TIES
Dalam SQL Server, klausa TOP n WITH TIES membenarkan untuk mendapatkan semula n baris teratas daripada jadual, termasuk ikatan dalam set hasil. PostgreSQL tidak mempunyai persamaan langsung dengan ciri ini. Walau bagaimanapun, terdapat kaedah alternatif untuk mencapai hasil yang serupa.
Kaedah Alternatif:
Pilihan 1: Menggunakan CTE dan Kedudukan
Dalam versi PostgreSQL sehingga 12, anda boleh menggunakan ungkapan jadual biasa (CTE) dengan fungsi pangkat() untuk mencapai kesan DENGAN IKATAN:
WITH cte AS ( SELECT *, rank() OVER (ORDER BY <something>) AS rnk FROM tbl ) SELECT * FROM cte WHERE rnk <= n;
Sebagai contoh, dengan jadual Nombor yang mengandungi {10, 9, 8, 8, 2}, pertanyaan berikut akan mengembalikan {10, 9, 8, 8}:
WITH cte AS ( SELECT nums, rank() OVER (ORDER BY nums DESC) AS rnk FROM Numbers ) SELECT nums FROM cte WHERE rnk <= 3;
Alternatif yang lebih pantas untuk PostgreSQL 12 dan Lebih lama:
Untuk jadual besar, kaedah alternatif berikut memberikan prestasi yang lebih pantas:
PostgreSQL 13 dan Ke atas:
PostgreSQL 13 memperkenalkan klausa WITH TIES, menyediakan pelaksanaan asli bagi fungsi ini:
SELECT nums FROM Numbers ORDER BY nums DESC LIMIT 3 WITH TIES;
Pertanyaan ini akan mengembalikan {10, 9, 8, 8} dengan betul .
Atas ialah kandungan terperinci Bagaimana untuk Meniru SQL Server TOP n DENGAN IKATAN dalam PostgreSQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!