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

MySQL 'ORDER BY order DESC' 구문 오류 해결 방법

MySQL에서 'order' 예약어로 인한 구문 오류 원인

MySQL에서 'order'ORDER BY 절에 사용되는 예약어(reserved word)입니다. 따라서 컬럼 이름을 'order'로 지정한 상태에서 쿼리에 그대로 사용하면 구문 오류(syntax error)가 발생합니다.

이 문제를 해결하는 가장 간단한 방법은 컬럼 이름을 백틱(backtick, `)으로 감싸는 것입니다.

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

select * from yourTableName ORDER BY `order` DESC;

예제로 확인하기

1. 테이블 생성

먼저 'order'라는 이름의 컬럼을 가진 테이블을 생성합니다. 이때도 컬럼 이름을 백틱으로 감싸야 합니다.

mysql> create table DemoTable
    (
    `order` int
    );
Query OK, 0 rows affected (0.58 sec)

2. 데이터 삽입

insert 명령을 사용해 몇 개의 레코드를 추가합니다.

mysql> insert into DemoTable values(89);
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable values(67);
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values(90);
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values(56);
Query OK, 1 row affected (0.13 sec)

3. 전체 레코드 조회

select 문으로 테이블의 모든 레코드를 확인합니다.

mysql> select *from DemoTable;

출력 결과

+-------+
| order |
+-------+
| 89    |
| 67    |
| 90    |
| 56    |
+-------+
4 rows in set (0.00 sec)

구문 오류 해결 쿼리

아래와 같이 컬럼 이름 'order'를 백틱으로 감싸면 ORDER BY 근처의 구문 오류 없이 정상적으로 내림차순 정렬됩니다.

mysql> select *from DemoTable ORDER BY `order` DESC;

출력 결과

+-------+
| order |
+-------+
| 90    |
| 89    |
| 67    |
| 56    |
+-------+
4 rows in set (0.00 sec)

추가 팁

백틱은 Windows에서 ` 키(숫자 1 왼쪽), Mac에서는 영문 입력 상태에서 ` 키로 입력할 수 있습니다. 다만, 애초에 테이블이나 컬럼 이름을 지을 때 'order', 'group', 'desc' 같은 MySQL 예약어를 피하는 것이 가장 좋은 습관입니다. 부득이하게 사용해야 한다면 항상 백틱으로 감싸는 것을 잊지 마세요.