집 >데이터 베이스 >MySQL 튜토리얼 >MySQL에서 레코드가 0인 날짜를 포함하여 범위 내의 모든 날짜를 검색하는 방법은 무엇입니까?
데이터베이스 관리에서 사용자 기반 성장을 시각화하려면 그래픽 표현이 필요한 경우가 많습니다. 이러한 그래프를 만들려면 특정 날짜 범위 내의 일일 사용자 수를 수집하는 쿼리가 있을 수 있습니다. 그러나 사용자 활동이 부족한 날짜는 결과에서 생략됩니다. 이 문제를 해결하기 위해 레코드가 없는 날짜를 포함하여 포괄적인 날짜 범위를 얻는 방법을 살펴보겠습니다.
MySQL에서 다음 쿼리는 지정된 날짜 범위 내에서 날짜별로 그룹화된 사용자 수를 검색합니다.
SELECT DATE(datecreated), count(*) AS number FROM users WHERE DATE(datecreated) > '2009-06-21' AND DATE(datecreated) <= DATE(NOW()) GROUP BY DATE(datecreated) ORDER BY datecreated ASC
이 쿼리는 원하는 정보를 대부분 제공하지만 사용자가 없는 날짜는 제외됩니다. 빈 날짜를 포함하려면 다음 접근 방식을 활용할 수 있습니다.
SELECT * FROM ( SELECT date_add('2003-01-01 00:00:00.000', INTERVAL n5.num*10000+n4.num*1000+n3.num*100+n2.num*10+n1.num DAY ) as date FROM (SELECT 0 AS num UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) n1, (SELECT 0 AS num UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) n2, (SELECT 0 AS num UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) n3, (SELECT 0 AS num UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) n4, (SELECT 0 AS num UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) n5 ) a WHERE date > '2011-01-02 00:00:00.000' AND date < NOW() ORDER BY date
이 쿼리를 사용하면 지정된 범위 내에서 일련의 날짜를 생성하고 해당 날짜에 해당 날짜가 없더라도 결과에 포함할 수 있습니다. 데이터베이스에 기록됩니다.
위 내용은 MySQL에서 레코드가 0인 날짜를 포함하여 범위 내의 모든 날짜를 검색하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!