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 サイトの他の関連記事を参照してください。