데이터베이스 관리에서 사용자 기반 성장을 시각화하려면 그래픽 표현이 필요한 경우가 많습니다. 이러한 그래프를 만들려면 특정 날짜 범위 내의 일일 사용자 수를 수집하는 쿼리가 있을 수 있습니다. 그러나 사용자 활동이 부족한 날짜는 결과에서 생략됩니다. 이 문제를 해결하기 위해 레코드가 없는 날짜를 포함하여 포괄적인 날짜 범위를 얻는 방법을 살펴보겠습니다.
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!