집 >데이터 베이스 >MySQL 튜토리얼 >PostgreSQL에서 SQL Server의 TOP n WITH TIES를 시뮬레이션하는 방법은 무엇입니까?
TOP n WITH TIES에 해당하는 PostgreSQL: LIMIT "with ties"
PostgreSQL은 SQL Server의 TOP n WITH에 직접적으로 해당하는 기능을 제공하지 않습니다. TIES 조항. PostgreSQL의 LIMIT 절은 반환할 행 수를 지정하는 데 사용되지만 동점은 포함되지 않습니다.
공통 테이블 표현식(CTE)을 사용하는 대체 접근 방식
PostgreSQL 버전 12까지에서는 순위 함수와 함께 공통 테이블 표현식(CTE)을 사용하여 WITH TIES를 시뮬레이션하는 대체 접근 방식이 있습니다. 동작:
WITH cte AS ( SELECT *, rank() OVER (ORDER BY <something>) AS rnk FROM tbl ) SELECT * FROM cte WHERE rnk <= n;
여기서 Rank()는 ORDER BY 절을 기반으로 각 행에 순위를 할당합니다. WHERE 절의 <= 비교를 사용하면 동점을 포함하여 순위가 n 이하인 모든 행이 선택됩니다.
PostgreSQL 12 이하의 대형 테이블에 대한 더 빠른 대안
큰 테이블의 경우 CTE 방법보다 빠른 대체 접근 방식을 제공합니다. 여기:
[비슷한 성능을 갖춘 Postgres 11의 FETCH FIRST WITH TIES와 동일](https://www.db-fiddle.com/f/h6i8x46q/0)
PostgreSQL 13 및 Beyond
PostgreSQL 13부터 WITH TIES 절이 정식으로 추가되었습니다. 이 절은 원하는 동작을 달성하기 위해 LIMIT 절과 함께 직접 사용할 수 있습니다.
SELECT * FROM tablename ORDER BY nums DESC LIMIT 3 WITH TIES;
이것은 원하는 대로 상위 3개 행을 취하고 다음을 포함하여 {10, 9, 8, 8}을 반환합니다. 세 번째 행과 연결되는 추가 8행.
위 내용은 PostgreSQL에서 SQL Server의 TOP n WITH TIES를 시뮬레이션하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!