>데이터 베이스 >MySQL 튜토리얼 >MySQL에서 빈 행을 포함하는 날짜 사이의 데이터를 선택하는 방법은 무엇입니까?

MySQL에서 빈 행을 포함하는 날짜 사이의 데이터를 선택하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-12-18 10:48:13338검색

How to Select Data Between Dates Including Empty Rows in MySQL?

MySQL에서 빈 행이 있는 날짜 사이의 데이터 선택

데이터베이스에서 지정된 날짜 사이의 데이터를 검색하는 것은 일반적인 작업입니다. 그러나 날짜 범위 내에 빈 행도 포함해야 하는 경우에는 어려울 수 있습니다. 이 기사에서는 MySQL에서 이 문제를 해결하는 기술을 살펴보겠습니다.

데이터와 날짜가 포함된 행이 있는 "tbl"이라는 테이블을 생각해 보세요.

2009-06-25    75
2009-07-01    100
2009-07-02    120

선택할 일반적인 쿼리 '2009-06-25'와 ​​'2009-07-01'이라는 두 날짜 사이의 데이터는 be:

SELECT data FROM tbl WHERE date BETWEEN '2009-06-25' AND '2009-07-01'

그러나 이 쿼리는 이 범위 내의 빈 날짜를 모두 누락합니다. 이를 포함하기 위해 MySQL은 "캘린더 테이블"이라는 강력한 개념을 제공합니다.

캘린더 테이블은 일련의 날짜를 포함하는 도우미 테이블입니다. 이 가이드에서 설명하는 기술을 사용하여 쉽게 만들 수 있습니다.

-- create some infrastructure
CREATE TABLE ints (i INTEGER);
INSERT INTO ints VALUES (0), (1), (2), (3), (4), (5), (6), (7), (8), (9);

-- only works for 100 days, add more ints joins for more
SELECT cal.date, tbl.data
FROM (
    SELECT '2009-06-25' + INTERVAL a.i * 10 + b.i DAY as date
    FROM ints a JOIN ints b
    ORDER BY a.i * 10 + b.i
) cal LEFT JOIN tbl ON cal.date = tbl.date
WHERE cal.date BETWEEN '2009-06-25' AND '2009-07-01';

이 쿼리는 '2009-06-25'부터 '2009-07-01'까지의 모든 행을 반환합니다. '데이터' 값이 0입니다. 하위 쿼리를 정기적으로 업데이트되는 달력 테이블로 대체하여 이 기술을 최적화할 수 있습니다.

위 내용은 MySQL에서 빈 행을 포함하는 날짜 사이의 데이터를 선택하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.