ホームページ > データベース > mysql チュートリアル > MySQL で空の行を含む日付間のデータを選択する方法?

MySQL で空の行を含む日付間のデータを選択する方法?

Barbara Streisand
リリース: 2024-12-18 10:48:13
オリジナル
336 人が閲覧しました

How to Select Data Between Dates Including Empty Rows in MySQL?

MySQL で空の行を含む日付間のデータを選択する

データベースから指定した日付間のデータを取得するのは一般的なタスクです。ただし、日付範囲内に空の行も含める必要がある場合は、困難になる可能性があります。この記事では、MySQL でこの問題に対処する手法を検討します。

データと日付を含む行を含む「tbl」という名前のテーブルを考えます。

2009-06-25    75
2009-07-01    100
2009-07-02    120
ログイン後にコピー

選択する一般的なクエリ2 つの日付の間のデータ、たとえば「2009-06-25」と「2009-07-01」の場合、 be:

SELECT data FROM tbl WHERE date BETWEEN '2009-06-25' AND '2009-07-01'
ログイン後にコピー

ただし、このクエリでは、この範囲内の空の日付は失われます。これらを含めるために、MySQL は「カレンダー テーブル」として知られる強力な概念を提供します。

カレンダー テーブルは、一連の日付を含むヘルパー テーブルです。このガイドで説明されている手法を使用して簡単に作成できます。

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

-- only works for 100 days, add more ints joins for more
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' までのすべての行を返します。 「データ」の値はゼロ。サブクエリを定期的に更新されるカレンダー テーブルに置き換えることで、この手法を最適化できることに注意してください。

以上がMySQL で空の行を含む日付間のデータを選択する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート