728x90
쿠폰이나 구독권이나 사용 가능 기간을 start_date 와 expir_date 로 테이블에 필드를 잡았다면 현재 일자를 입력 받아서 유효한지 아닌지를 체크 하려면 count 를 사용해도 되지만 true, false 로 반환하는 방법도 있다. 아래 쿼리문은 true, false 반환하는 예시다.
초보때 쿼리문을 뽑을때 데이터가 없으면 해당 날짜에 포함되는 데이터가 없으면 조회 되는 row 자체가 없기에 date_condition 으로 접근 자체가 안되는걸 모르고 한참 삽질을 한적이 있는데 예시와 같이 case 문으로 뽑을 수도 있다. 보통은 count 로 해서 0보다 크면 조건으로 많이 작업한다.
SELECT
CASE WHEN EXISTS (
SELECT 1 FROM cupon
WHERE user_seq = ${user_seq} AND start_date <= #{today} AND expir_date >= #{today}
)
THEN 'true' ELSE 'false' END AS date_condition
count 가 조금 더 코드가 간소하고 명확하기도 하다.
SELECT COUNT(date_condition) as date_condition_cnt
FROM cupon
WHERE user_seq=${user_seq} AND start_date <=#{today} AND expir_date >= #{today}
오늘은 이미 되어 있는 쿼리문이어서 다른 곳에서도 사용하는 곳이 있어서 부득이하게 수정하긴 했는데 지금 같은 케이스틑 count 가져오는게 편리한거 같다.
728x90
'MYSQL' 카테고리의 다른 글
sql 그룹별 평균 구하기 (0) | 2024.11.18 |
---|---|
mysql 리액트 만나이 계산 (0) | 2024.11.11 |
mysql 날짜 비교 현재 일자 보다 작은 데이터 select query (0) | 2023.12.20 |
sql 쿼리문예제 null 체크 와 case 문 동시에 마이너스일 경우 0 으로 (0) | 2023.04.25 |
mysql 문자열 자르기 select 구문 (0) | 2023.04.19 |