Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

SQL Server에서 MySQL LIMIT 절에 해당하는 기능과 사용법

LIMIT 절은 쿼리 결과에서 반환되는 행의 개수를 제한할 때 사용하는 구문입니다. SQL Server에는 MySQL의 LIMIT 절이 그대로 존재하지 않으며, 대신 TOP 절이나 OFFSET-FETCH 절을 사용해 동일한 기능을 구현할 수 있습니다.

이 글에서는 먼저 MySQL에서 LIMIT 절을 사용하는 방법을 예제와 함께 살펴본 뒤, SQL Server에서 같은 결과를 얻는 방법까지 정리해 드리겠습니다.

예제용 테이블 생성하기

LIMIT 절의 동작을 확인하기 위해 먼저 테이블을 생성하겠습니다. CREATE 명령어를 사용합니다.

mysql> CREATE table limitDemo
-> (
-> id int,
-> primary key(id)
-> );
Query OK, 0 rows affected (0.58 sec)

테이블에 레코드 삽입하기

테이블 생성이 완료되면 INSERT 문으로 레코드를 추가합니다.

mysql> INSERT into limitDemo values(1);
Query OK, 1 row affected (0.16 sec)

mysql> INSERT into limitDemo values(2);
Query OK, 1 row affected (0.12 sec)

mysql> INSERT into limitDemo values(3);
Query OK, 1 row affected (0.11 sec)

mysql> INSERT into limitDemo values(4);
Query OK, 1 row affected (0.10 sec)

mysql> INSERT into limitDemo values(5);
Query OK, 1 row affected (0.12 sec)

mysql> INSERT into limitDemo values(6);
Query OK, 1 row affected (0.13 sec)

mysql> INSERT into limitDemo values(7);
Query OK, 1 row affected (0.15 sec)

mysql> INSERT into limitDemo values(8);
Query OK, 1 row affected (0.09 sec)

mysql> INSERT into limitDemo values(9);
Query OK, 1 row affected (0.14 sec)

저장된 전체 레코드 조회하기

SELECT 문을 사용해 테이블에 저장된 모든 레코드를 확인해 보겠습니다.

mysql> SELECT * from limitDemo;

실행 결과는 다음과 같습니다.

+----+
| id |
+----+
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
| 7 |
| 8 |
| 9 |
+----+
9 rows in set (0.00 sec)

MySQL LIMIT 절의 기본 문법

LIMIT 절의 기본 문법은 다음과 같습니다. OFFSET을 함께 사용하면 지정한 행 수만큼 건너뛴 후 결과를 반환할 수 있습니다.

SELECT column_name1……..N from yourTableName limit integervalue offset integervalue;

이제 실제로 위 문법을 적용해 보겠습니다. 아래 쿼리는 앞의 2개 행을 건너뛰고, 그다음부터 5개의 행만 조회합니다.

mysql> SELECT id from limitDemo limit 5 offset 2;

실행 결과는 다음과 같습니다.

+----+
| id |
+----+
| 3 |
| 4 |
| 5 |
| 6 |
| 7 |
+----+
5 rows in set (0.00 sec)

SQL Server에서 LIMIT과 동일한 기능 구현하기

SQL Server에서는 위와 같은 결과를 두 가지 방식으로 얻을 수 있습니다.

1. TOP 절 사용하기

상위 N개의 행만 조회할 때는 TOP 절을 사용합니다.

SELECT TOP 5 id FROM limitDemo;

2. OFFSET-FETCH 절 사용하기 (SQL Server 2012 이상)

행을 건너뛰면서 조회하려면 ORDER BY와 함께 OFFSET-FETCH 절을 사용합니다. MySQL의 LIMIT 5 OFFSET 2와 동일한 결과를 얻는 쿼리는 다음과 같습니다.

SELECT id FROM limitDemo
ORDER BY id
OFFSET 2 ROWS FETCH NEXT 5 ROWS ONLY;

정리하면, MySQL의 LIMIT 절은 SQL Server에서 TOP 절(단순 개수 제한) 또는 OFFSET-FETCH 절(건너뛰기 + 개수 제한)로 대체할 수 있습니다. 페이징 처리처럼 특정 범위의 데이터를 조회해야 한다면 OFFSET-FETCH 절을 사용하는 것이 가장 깔끔한 방법입니다.