나는 다음과 같은 일을하려고합니다.
SELECT * FROM table LIMIT 10,20
또는
SELECT * FROM table LIMIT 10 OFFSET 10
그러나 SQL Server 사용
SELECT * FROM (
SELECT *, ROW_NUMBER() OVER (ORDER BY name) as row FROM sys.databases
) a WHERE row > 5 and row <= 10
나는 또한 발견했다 :
SELECT TOP 10 * FROM stuff;
...하지만 시작 한계를 지정할 수 없기 때문에 내가하고 싶은 것이 아닙니다.
내가 할 수있는 또 다른 방법이 있습니까?
또한 궁금한 점이 있는데 SQL Server가 LIMIT
함수 또는 이와 유사한 기능을 지원하지 않는 이유가 있습니까? 나는 의미가되고 싶지 않지만 DBMS가 필요로하는 것처럼 들린다. 만약 그렇다면, 그렇게 무지한 것이 유감 스럽다! 지난 5 년간 MySQL 및 SQL +와 함께 일해 왔습니다.
ROW_NUMBER()
제한TOP
하고 범위WHERE
의 경계 조건을 달성하는 것이 가장 좋습니다. 경우 나는 훨씬 더 나은 성능을 나타났습니다TOP
절은 변수 대신 문자를 사용