PostgreSQL-Äquivalent für TOP n WITH TIES
Beim Umgang mit dem Datenabruf in SQL Server ermöglicht die TOP n WITH TIES-Klausel den Abruf von die ersten n Zeilen einer Tabelle, einschließlich aller Zeilen, die die letzte Position belegen. Diese Funktion stellt sicher, dass alle Zeilen mit äquivalenten Werten zurückgegeben werden, sodass keine zusätzlichen Abfragen erforderlich sind.
In PostgreSQL gibt es kein direktes Äquivalent zur WITH TIES-Klausel. Es gibt jedoch zwei Ansätze, die das gleiche Ergebnis erzielen:
Verwendung einer Rang-Unterabfrage
WITH cte AS ( SELECT *, RANK() OVER (ORDER BY <column_name>) AS rnk FROM tablename ) SELECT * FROM cte WHERE rnk <= n;
Diese Methode weist jeder Zeile in der Tabelle einen Rang zu, mit Krawatten erhalten den gleichen Rang. Die LIMIT-Klausel wird dann verwendet, um nur die Zeilen mit Rängen bis einschließlich n zurückzugeben.
Array-Aggregation verwenden
Eine andere Methode beinhaltet die Verwendung der Array-Aggregation und der UNNEST-Funktion um verbundene Zeilen zu gruppieren und zurückzugeben:
SELECT UNNEST( ARRAY_AGG(DISTINCT nums) OVER ( ORDER BY nums DESC ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) ) AS nums FROM Numbers ORDER BY nums DESC LIMIT n;
Dieser Ansatz fasst alle unterschiedlichen Werte von Zahlen in einem Array zusammen. die dann entschachtelt wird, um die gebundenen Zeilen zurückzugeben. Die LIMIT-Klausel stellt sicher, dass nur die obersten n Werte zurückgegeben werden.
PostgreSQL 13 und darüber hinaus
Es ist erwähnenswert, dass PostgreSQL 13 die WITH TIES-Klausel eingeführt hat, die direkt äquivalent ist Implementierung von SQL Server. Wenn Sie PostgreSQL 13 oder höher verwenden, können Sie daher die folgende Syntax verwenden:
SELECT TOP n WITH TIES nums FROM Numbers ORDER BY nums DESC;
Dies vereinfacht den Prozess des Abrufens gebundener Zeilen in PostgreSQL und macht alternative Methoden überflüssig.
Das obige ist der detaillierte Inhalt vonWie erreicht man die TOP n WITH TIES-Funktionalität von SQL Server in PostgreSQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!