ホームページ >データベース >mysql チュートリアル >一時テーブルや変数を使用せずに日付シリーズを生成するにはどうすればよいですか?
一時テーブルまたは変数を使用しない一連の日付の生成
事前定義された日付範囲を持つテーブルが利用できるにもかかわらず、このアプローチは最適とは言えません。一時テーブルや変数操作に頼らずに、指定した間隔内で一連の日付を生成するにはどうすればよいですか?
次のシナリオを考えてみましょう。アプリケーションでは、利用可能なデータに関係なく、日付ごとに行を返すレポートが必要です。これを実現するには、単純なクエリを作成できます。
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 中国語 Web サイトの他の関連記事を参照してください。