MySQL에서 첫 번째와 마지막 레코드 조회하기
MySQL에서 테이블의 첫 번째 레코드와 마지막 레코드를 동시에 가져오려면 UNION을 사용하면 됩니다. 각 SELECT 문에 LIMIT를 적용해 원하는 개수만큼의 레코드를 추출한 뒤, 두 결과를 하나로 합치는 방식입니다.
먼저 예제 테이블을 생성해 보겠습니다.
mysql> create table DemoTable694 (
EmployeeId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
EmployeeName varchar(100),
EmployeeSalary int
);
Query OK, 0 rows affected (0.58 sec)1. 테이블에 데이터 삽입하기
INSERT 명령어를 사용해 몇 개의 샘플 레코드를 추가합니다.
mysql> insert into DemoTable694(EmployeeName,EmployeeSalary) values('Chris',457647);
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable694(EmployeeName,EmployeeSalary) values('Robert',90883);
Query OK, 1 row affected (0.25 sec)
mysql> insert into DemoTable694(EmployeeName,EmployeeSalary) values('David',123532);
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable694(EmployeeName,EmployeeSalary) values('Mike',989322);
Query OK, 1 row affected (0.22 sec)2. 전체 레코드 확인하기
SELECT 문으로 테이블의 모든 레코드를 조회합니다.
mysql> select *from DemoTable694;
실행 결과는 다음과 같습니다.
+------------+--------------+----------------+ | EmployeeId | EmployeeName | EmployeeSalary | +------------+--------------+----------------+ | 1 | Chris | 457647 | | 2 | Robert | 90883 | | 3 | David | 123532 | | 4 | Mike | 989322 | +------------+--------------+----------------+ 4 rows in set (0.00 sec)
3. 첫 번째와 마지막 레코드 조회 쿼리
첫 번째 레코드는 ORDER BY ... ASC와 LIMIT 1로, 마지막 레코드는 ORDER BY ... DESC와 LIMIT 1로 각각 조회한 후, 이를 UNION으로 결합합니다.
mysql> (select *from DemoTable694 order by EmployeeId ASC LIMIT 1) UNION (select *from DemoTable694 order by EmployeeId DESC LIMIT 1);
위 쿼리의 실행 결과는 다음과 같습니다.
+------------+--------------+----------------+ | EmployeeId | EmployeeName | EmployeeSalary | +------------+--------------+----------------+ | 1 | Chris | 457647 | | 4 | Mike | 989322 | +------------+--------------+----------------+ 2 rows in set (0.00 sec)
결과를 보면 직원 ID가 1인 'Chris'(첫 번째 레코드)와 ID가 4인 'Mike'(마지막 레코드)가 함께 반환된 것을 확인할 수 있습니다.
추가 팁: UNION ALL 사용 시 주의점
UNION은 중복 행을 자동으로 제거합니다. 테이블에 레코드가 하나뿐이라면 첫 번째와 마지막 레코드가 동일하게 되므로, UNION을 사용하면 결과가 한 행만 표시됩니다. 만약 중복 제거 없이 결과를 유지하고 싶다면 UNION ALL을 사용하는 것이 좋습니다.