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

MySQL 'OPTION SQL_SELECT_LIMIT=10' 근처 구문 오류 해결 방법

MySQL 'OPTION SQL_SELECT_LIMIT' 오류의 원인과 해결 방법

MySQL에서 SET OPTION SQL_SELECT_LIMIT=10과 같은 쿼리를 실행하면 "올바른 구문이 아니다"라는 의미의 구문 오류가 발생할 수 있습니다. 그 이유는 SET OPTION 구문이 이미 폐기(deprecated)되었기 때문입니다. 대신 SET SQL_SELECT_LIMIT 구문을 사용해야 합니다.

기본 문법

올바른 문법은 다음과 같습니다.

SET SQL_SELECT_LIMIT=정수값;

이 설정은 현재 세션에서 SELECT 쿼리가 반환하는 최대 행 수를 제한합니다. LIMIT 절을 매번 작성하지 않고도 조회 결과 개수를 손쉽게 조절할 수 있다는 장점이 있습니다.

예제 테이블 생성

문법을 실제로 이해하기 위해 먼저 테이블을 생성해 보겠습니다.

mysql> create table MySQLSelectDemo
    -> (
    -> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY
    -> );
Query OK, 0 rows affected (0.99 sec)

다음으로 INSERT 명령어를 사용해 여러 레코드를 삽입합니다.

mysql> INSERT INTO MySQLSelectDemo VALUES(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),();
Query OK, 37 rows affected (0.20 sec)
Records: 37 Duplicates: 0 Warnings: 0

SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.

mysql> SELECT *FROM MySQLSelectDemo;

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

+----+
| Id |
+----+
| 1  |
| 2  |
| 3  |
| 4  |
| 5  |
| 6  |
| 7  |
| 8  |
| 9  |
| 10 |
| 11 |
| 12 |
| 13 |
| 14 |
| 15 |
| 16 |
| 17 |
| 18 |
| 19 |
| 20 |
| 21 |
| 22 |
| 23 |
| 24 |
| 25 |
| 26 |
| 27 |
| 28 |
| 29 |
| 30 |
| 31 |
| 32 |
| 33 |
| 34 |
| 35 |
| 36 |
| 37 |
+----+
37 rows in set (0.00 sec)

전체 37개의 레코드가 조회된 것을 확인할 수 있습니다. 이제 SQL_SELECT_LIMIT를 설정해 보겠습니다.

사례 1: SQL_SELECT_LIMIT를 3으로 설정

mysql> SET SQL_SELECT_LIMIT=3;
Query OK, 0 rows affected (0.00 sec)

설정 후 테이블의 레코드를 다시 조회하면 3개의 레코드만 반환됩니다.

mysql> SELECT *FROM MySQLSelectDemo;

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

+----+
| Id |
+----+
| 1  |
| 2  |
| 3  |
+----+
3 rows in set (0.00 sec)

사례 2: SQL_SELECT_LIMIT를 10으로 설정

mysql> SET SQL_SELECT_LIMIT=10;
Query OK, 0 rows affected (0.00 sec)

이번에는 위 쿼리 실행 후 10개의 레코드만 조회됩니다.

mysql> SELECT *FROM MySQLSelectDemo;

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

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

참고: 기본값으로 되돌리기

행 수 제한을 해제하고 싶다면 아래와 같이 DEFAULT 키워드를 사용하면 됩니다.

mysql> SET SQL_SELECT_LIMIT=DEFAULT;
Query OK, 0 rows affected (0.00 sec)

이렇게 하면 세션의 조회 행 수 제한이 서버 기본값으로 복원됩니다. 정리하면, 구버전 방식인 SET OPTION SQL_SELECT_LIMIT 대신 SET SQL_SELECT_LIMIT를 사용하면 해당 구문 오류를 간단히 해결할 수 있습니다.