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

MySQL에서 현재 날짜와 일치하는 중복 레코드를 한 번만 조회하는 방법

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을 추가하면 중복된 날짜 레코드가 여러 개 있더라도 첫 번째 레코드 하나만 반환됩니다. 이 방법은 오늘 날짜의 데이터 존재 여부만 빠르게 확인하고 싶을 때 특히 유용합니다.