CREATE TABLE t (Date DATE NOT NULL UNIQUE, Value int); INSERT t VALUES('2006-03-01', 1);
みたいなテーブルで、2006-03-01〜2006-03-03 の3日間のデータを得たいとき、
mysql> SELECT * FROM t WHERE Date BETWEEN '2006-03-01' AND '2006-03-03';
とするけど、これだと結果が1行になってしまう。
+------------+-------+ | Date | Value | +------------+-------+ | 2006-03-01 | 1 | +------------+-------+ 1 row in set (0.00 sec)
↓こういう結果が欲しいときはどうすれば。
+------------+-------+ | Date | Value | +------------+-------+ | 2006-03-01 | 1 | | 2006-03-02 | 0 | | 2006-03-03 | 0 | +------------+-------+
かっこわるそうなアイデアとしては、日付だけが一通り入ったテーブルをFROMにして t を JOIN する。