SQL문을 통해 데이터를 조회 시 한 달 이내 자료 조회, 일주일 이내 자료 조회 등과 같은
기간을 통한 조회방법이 필요한 경우가 많습니다.
이러한 기간조회 방식은 date_add라는 sql문을 통해 사용합니다.
SELECT * FROM cordinghero.test where date > date_add(now(),interval -1 month);
먼저 위의 구문에서 date_add 앞쪽에 기호가 어느 방향이냐에 따라서
조회하는 기간 이내인가 아니면 기간을 지난것인가를 결정합니다.
date > date_add 라면 뒤쪽에 -1 month이므로 한 달 이내라는 뜻이고
date < date_add 로 방향을 변경하면 한 달이 지난 데이터라는 뜻이 됩니다.
여기서 interval은 month 뿐만 아니라 day나 year 등을 사용할 수 있습니다.
이렇게 단일 테이블에서 조회하는 경우에는 간단하지만 만약 date값이 다른 테이블에 있다고
가정한다면 어떻게 조회해야 할까요?
먼저 다음과 같이 두 개의 테이블이 있다고 가정하겠습니다.
test 1
id | data | date |
1 | abc | 2022-02-16 |
2 | bbc | 2022-01-02 |
test2
phone | id |
010-1111-2222 | 1 |
010-1234-1234 | 2 |
test 1은 등록된 날짜가 있고 test2에는 등록 phone 정보가 있습니다.
sql을 통해 한 달 이내에 등록된 사용자의 phone 정보를 조회하기 위해서는 다음과 같이 적용합니다.
select * from test2 where id in(select id from test1 where date > date_add(now(),interval -1 month));
첫 번째 select에서 조건이 되는 id 값에 in구문을 통해서 test 1에 id를 조회한 값을 넣어줍니다.
이렇게 조회를 하면 결과는 test 1에서 한 달 이내를 만족하는 id 1이 test2 id에 적용되어
조회된 테이블은 id 1을 만족하는 테이블 정보가 됩니다.
phone | id |
010-1111-2222 | 1 |
이렇게 in 구문을 통해 다른 테이블과 연동하여 사용할 수 있습니다.
'서버 > Mysql' 카테고리의 다른 글
Mysql 패스워드 암호화 및 복호화 (6) | 2022.04.12 |
---|---|
SQL 두 테이블 비교하여 한쪽 테이블 없는 값 추출 (8) | 2022.02.17 |
Mysql 사용자 생성 및 권한 설정 (6) | 2022.02.11 |
Mysql 에러 로그 출력 (6) | 2022.02.09 |
Mysql 필드 데이터 Null select 방법 (22) | 2022.01.27 |
댓글