> 데이터 베이스 > MySQL 튜토리얼 > 임시 테이블이나 변수 없이 날짜 계열을 생성하는 방법은 무엇입니까?

임시 테이블이나 변수 없이 날짜 계열을 생성하는 방법은 무엇입니까?

Barbara Streisand
풀어 주다: 2024-12-06 12:22:12
원래의
822명이 탐색했습니다.

How to Generate a Date Series Without Temporary Tables or Variables?

임시 테이블이나 변수 없이 일련의 날짜 생성

미리 정의된 날짜 범위가 있는 테이블을 사용할 수 있음에도 불구하고 이 접근 방식은 차선책으로 간주됩니다. 임시 테이블이나 변수 조작을 사용하지 않고 지정된 간격 내에서 일련의 날짜를 생성하려면 어떻게 해야 합니까?

다음 시나리오를 고려해 보십시오. 애플리케이션에는 사용 가능한 데이터에 관계없이 각 날짜에 대한 행을 반환하는 보고서가 필요합니다. 이를 달성하려면 간단한 쿼리를 구성할 수 있습니다.

select dates.date, sum(sales.amount)
from <series of dates between X and Y> dates
left join sales on date(sales.created) = dates.date
group by 1
로그인 후 복사

많은 날짜가 포함된 테이블을 생성하지 않으려면 대체 솔루션이 권장됩니다.

select * from 
(select adddate('1970-01-01',t4*10000 + t3*1000 + t2*100 + t1*10 + t0) gen_date from
 (select 0 t0 union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t0,
 (select 0 t1 union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t1,
 (select 0 t2 union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t2,
 (select 0 t3 union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t3,
 (select 0 t4 union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t4) v
where gen_date between '2017-01-01' and '2017-12-31'
로그인 후 복사

이 쿼리는 효과적으로 계열을 생성합니다. 별도의 테이블을 생성하거나 변수를 설정하지 않고도 지정된 범위 내에서 날짜를 조회할 수 있습니다.

위 내용은 임시 테이블이나 변수 없이 날짜 계열을 생성하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿