ホームページ >データベース >mysql チュートリアル >MySQL データ取得で欠落している日付を入力するにはどうすればよいですか?

MySQL データ取得で欠落している日付を入力するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-12 19:09:11359ブラウズ

How to Populate Missing Dates in MySQL Data Retrievals?

日付間のデータの取得: 空のレコードの作成

MySQL では、通常、指定された日付範囲内のデータの選択は BETWEEN 演算子を使用して行われます。ただし、この方法では、データが存在しない日付が欠落する可能性があります。これを解決するには、「カレンダー テーブル」を使用する手法が使用されます。

カレンダー テーブルの概念は、目的の範囲内の日付のシーケンスを含むテーブルを作成することです。これは、次のコードを使用して実現されます:

CREATE TABLE ints (i INTEGER);
INSERT INTO ints VALUES (0), (1), (2), (3), (4), (5), (6), (7), (8), (9);

このテーブルには、0 から 9 までの数値の範囲が表示されます。カレンダー テーブルを生成するには、int とそれ自体を複数回結合して、日付間隔のリストを作成します。

SELECT '2009-06-25' + INTERVAL a.i * 10 + b.i DAY as date
FROM ints a JOIN ints b
ORDER BY a.i * 10 + b.i

結果は、「2009-06-25」から「2009-06-25」までの一連の日付を含むテーブルです。 「2009年7月4日」。データを取得するために、カレンダー テーブルと元のテーブルを左結合します。

SELECT cal.date, tbl.data
FROM (
    SELECT '2009-06-25' + INTERVAL a.i * 10 + b.i DAY as date
    FROM ints a JOIN ints b
    ORDER BY a.i * 10 + b.i
) cal LEFT JOIN tbl ON cal.date = tbl.date
WHERE cal.date BETWEEN '2009-06-25' AND '2009-07-01';

このクエリは、'2009-06-25' から '2009-07-01' までのすべての日付のデータを返します。 「0」が入力されたデータのない行も含まれます。

以上がMySQL データ取得で欠落している日付を入力するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。