MySQL에서 날짜 범위에 대한 데이터 공백 채우기
두 특정 날짜 사이의 데이터를 검색해야 하는 시나리오가 발생할 수 있습니다. 해당 범위 내 특정 날짜에 대한 항목이 없습니다. 이 문제를 해결하기 위해 널리 사용되는 접근 방식은 "캘린더 테이블"을 만드는 것입니다.
다음 테이블 구조를 고려하세요.
CREATE TABLE data ( date DATE, value INT ); INSERT INTO data VALUES ('2009-06-25', 75), ('2009-07-01', 100), ('2009-07-02', 120);
'2009-06-25'부터 2009년 6월 25일 사이의 모든 데이터를 검색하려면 '2009-07-01', 다음 쿼리를 사용할 수 있습니다.
SELECT date, value FROM data WHERE date BETWEEN '2009-06-25' AND '2009-07-01';
그러나 이 쿼리는 연관된 데이터가 없는 지정된 범위 내의 모든 날짜를 제외합니다. 이 문제를 해결하기 위해 달력 테이블이 사용됩니다.
주어진 날짜 범위에 대한 달력 테이블을 생성하려면 다음 단계를 수행할 수 있습니다.
CREATE TABLE cal ( date DATE ); INSERT INTO cal (date) SELECT DATE_ADD('2009-06-25', INTERVAL i * 10 + j DAY) FROM ints i CROSS JOIN ints j WHERE DATE_ADD('2009-06-25', INTERVAL i * 10 + j DAY) BETWEEN '2009-06-25' AND '2009-07-01';
cal 테이블에는 모든 날짜가 포함됩니다. '2009-06-25'와 '2009-07-01' 사이이지만 관련 데이터가 없습니다. 간격과 함께 원하는 데이터를 검색하려면 왼쪽 조인을 사용할 수 있습니다.
SELECT cal.date, data.value FROM cal LEFT JOIN data ON cal.date = data.date WHERE cal.date BETWEEN '2009-06-25' AND '2009-07-01';
이 쿼리는 데이터가 없는 날짜를 포함하여 지정된 범위 내의 모든 날짜를 반환하며, 해당 날짜는 NULL 값으로 표시됩니다. 값 열입니다.
위 내용은 전체 날짜 범위에 대해 MySQL 쿼리에서 누락된 날짜를 어떻게 채울 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!