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

MySQL에서 컬럼명 없이 쿼리 결과를 정렬하는 방법

MySQL에서는 컬럼명이나 식별자를 직접 지정하지 않고도 ORDER BY 절에 컬럼의 위치 번호를 사용해 결과를 정렬할 수 있습니다. 예를 들어 ORDER BY 1은 SELECT 문에서 첫 번째로 선택된 컬럼을 기준으로 정렬하라는 의미입니다.

기본 문법은 다음과 같습니다.

select * from yourTableName order by 1 DESC LIMIT yourLimitValue;

예제 테이블 생성하기

먼저 실습에 사용할 테이블을 생성합니다.

mysql> create table DemoTable1325
    -> (
    -> Id int,
    -> Name varchar(20)
    -> );
Query OK, 0 rows affected (0.69 sec)

데이터 삽입하기

INSERT 명령어를 사용해 테이블에 레코드를 추가합니다.

mysql> insert into DemoTable1325 values(100,'Chris');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable1325 values(101,'Bob');
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable1325 values(120,'David');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable1325 values(115,'Sam');
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable1325 values(130,'Carol');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable1325 values(150,'Mike');
Query OK, 1 row affected (0.15 sec)

저장된 데이터 확인하기

SELECT 문으로 테이블의 모든 레코드를 조회합니다.

mysql> select * from DemoTable1325;

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

+------+-------+
| Id   | Name  |
+------+-------+
| 100 | Chris |
| 101 | Bob   |
| 120 | David |
| 115 | Sam   |
| 130 | Carol |
| 150 | Mike  |
+------+-------+
6 rows in set (0.00 sec)

식별자 없이 내림차순 정렬하기

이제 컬럼명 대신 위치 번호를 사용해 첫 번째 컬럼(Id) 기준으로 내림차순 정렬하고, LIMIT으로 상위 4개 행만 조회해 보겠습니다.

mysql> select * from DemoTable1325 order by 1 DESC LIMIT 4;

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

+------+-------+
| Id   | Name  |
+------+-------+
| 150  | Mike  |
| 130  | Carol |
| 120  | David |
| 115  | Sam   |
+------+-------+
4 rows in set (0.00 sec)

위 결과를 보면 ORDER BY 1 DESC가 첫 번째 컬럼인 Id를 기준으로 내림차순 정렬했으며, LIMIT 4에 의해 가장 큰 값 4개만 반환된 것을 확인할 수 있습니다.

참고 사항

위치 기반 정렬은 간편하지만, 나중에 SELECT 목록의 컬럼 순서가 바뀌면 의도와 다르게 동작할 수 있으므로 실무에서는 가능한 한 명시적인 컬럼명 사용을 권장합니다.