MySQL 5.1上的按日期分组无泄漏SQL

MySQL 5.1上的按日期分组无泄漏SQL,mysql,sql,mysql5,mysql-5.1,Mysql,Sql,Mysql5,Mysql 5.1,可能重复: 创建表: CREATE TABLE `trb3` ( `value` varchar(50) default NULL, `date` date default NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 SELECT date, SUM(value) AS value FROM trb3 GROUP BY date ORDER BY date DESC 但是 为什么03年6月数据没有出现 如何解决此问题。您需要获得所需日

可能重复:

创建表:

CREATE TABLE `trb3` (
  `value` varchar(50) default NULL,
  `date` date default NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 


SELECT date, SUM(value) AS value FROM trb3 GROUP BY date ORDER BY date DESC
但是

为什么03年6月数据没有出现


如何解决此问题。

您需要获得所需日期的列表,然后再加入:

create table my_dates (my_date date not NULL);
然后用您想要的数据填充my_日期:

insert into my_dates values ('2011-06-01'), ('2011-06-02'), ...;
然后

编辑:
仅供参考,这不是一个临时表,而是一个永久表。

您有03年6月的数据吗?如果不是,结果中将不会显示6月3日-只会显示实际数据。我没有6月3日的数据,但我想获得“0”数据。非常感谢。但我不想创建表。我能不用临时表解决问题吗?@freddiefujiwara:如果你不想用临时表解决这个问题,那就用持久表解决吧。数字表在许多不同的情况下都会派上用场。您可以创建一个,并在这个特定的问题中使用它来创建一个与您的条件匹配的范围内的连续日期列表。是的,还有其他方法来解决这个问题-碰巧这是正确的方法
insert into my_dates values ('2011-06-01'), ('2011-06-02'), ...;
select my_dates.date, SUM(value)
from my_dates left join trb3 on trb3.date = my_dates.my_date
group by 1;