ホームページ >データベース >mysql チュートリアル >SQL クエリ結果の欠落した日付をカウント 0 で埋めるにはどうすればよいですか?
SQL 結果に空の日付を埋め込む
テーブルから日付とカウントをエクスポートするために MySQL にクエリを実行すると、日付範囲にギャップが生じる可能性があります。行方不明の日々。これらのギャップをカウント 0 のエントリで埋めるための簡単な方法は、サーバー側ストアド プロシージャを利用することです。
ストアド プロシージャによるサーバー側パディング
次のとおりです。ストアド プロシージャは、指定された範囲内のすべての可能な日付を含む一時テーブルを作成します。次に、このテーブルはクエリ結果と左結合され、欠落している日付が埋められます。
create procedure sp1(d1 date, d2 date) declare d datetime; create temporary table foo (d date not null); set d = d1 while d <= d2 do insert into foo (d) values (d) set d = date_add(d, interval 1 day) end while select foo.d, count(date) from foo left join table on foo.d = table.date group by foo.d order by foo.d asc; drop temporary table foo; end procedure
このプロシージャは 2 つの日付を入力として受け取り、それらの間にある可能性のあるすべての日付を含む一時テーブル foo を生成します。次に、元のクエリとの左結合を実行して、欠落している日付を含めて完全なデータセットを返します。
クライアント側チェック (オプション)
さらに、単純な現在の日付が前の日付に 1 日を加えたものと等しくない場合を処理するために、クライアント側 (Perl など) にチェックを実装できます。このような場合、カウントがゼロの文字列を出力に追加できます。
以上がSQL クエリ結果の欠落した日付をカウント 0 で埋めるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。