MySQL에서 특정 날짜와 일치하는 레코드를 조회할 때, 동일한 날짜가 여러 번 저장되어 있어도 결과를 한 번만 표시하고 싶은 경우가 있습니다. 이럴 때는 LIMIT 절을 활용하면 간단하게 해결할 수 있습니다.
예제 시나리오
현재 날짜가 다음과 같다고 가정해 보겠습니다.
2019-10-02
1. 테이블 생성하기
먼저 예제에 사용할 테이블을 생성합니다.
mysql> create table DemoTable1450
-> (
-> DueDate date
-> );
Query OK, 0 rows affected (0.63 sec)2. 데이터 삽입하기
INSERT 명령어를 사용해 몇 개의 레코드를 입력합니다. 이때 의도적으로 같은 날짜(2019-10-02)를 세 번 삽입합니다.
mysql> insert into DemoTable1450 values('2019-09-30');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable1450 values('2019-10-02');
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable1450 values('2019-10-02');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable1450 values('2019-10-02');
Query OK, 1 row affected (0.30 sec)3. 전체 데이터 확인하기
SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.
mysql> select * from DemoTable1450;
실행 결과는 다음과 같습니다.
+------------+ | DueDate | +------------+ | 2019-09-30 | | 2019-10-02 | | 2019-10-02 | | 2019-10-02 | +------------+ 4 rows in set (0.00 sec)
위 결과에서 볼 수 있듯이 '2019-10-02' 날짜가 총 3번 반복되어 저장되어 있습니다.
4. LIMIT으로 중복 결과 한 번만 조회하기
반복되는 일치 날짜를 단 한 번만 표시하려면 다음과 같이 LIMIT 1을 사용한 쿼리를 실행합니다.
mysql> select * from DemoTable1450 where DueDate=curdate() limit 1;
실행 결과는 다음과 같습니다.
+------------+ | DueDate | +------------+ | 2019-10-02 | +------------+ 1 row in set (0.00 sec)
정리
CURDATE() 함수로 현재 날짜와 일치하는 레코드를 필터링하고, LIMIT 1을 추가하면 중복된 날짜 레코드가 여러 개 있더라도 첫 번째 레코드 하나만 반환됩니다. 이 방법은 오늘 날짜의 데이터 존재 여부만 빠르게 확인하고 싶을 때 특히 유용합니다.