mysql数据库
有两个字段,count,inputtime
count是int类型,
inputtime是date类型,
想查starttime至endtime这段时间的count数据,
如果有,则显示count的数据,如果没有,就为0,请为怎么做?
比如当starttime='2010-08-01',endtime='2010-08-03',2010-08-01有数据,2010-08-02没数据,2010-08-03有数据怎么写sql语句才能显示22 2010-08-01
0 2010-08-02
33 2010-08-03
有两个字段,count,inputtime
count是int类型,
inputtime是date类型,
想查starttime至endtime这段时间的count数据,
如果有,则显示count的数据,如果没有,就为0,请为怎么做?
比如当starttime='2010-08-01',endtime='2010-08-03',2010-08-01有数据,2010-08-02没数据,2010-08-03有数据怎么写sql语句才能显示22 2010-08-01
0 2010-08-02
33 2010-08-03
CREATE TABLE `test` (
`id` int(11) NOT NULL,
`count` int(11) DEFAULT NULL,
`inputtime` date DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
建表语句在上面
CREATE TABLE IF NOT EXISTS `test` (
`id` int(11) NOT NULL,
`count` int(11) default '0',
`inputtime` date default NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
这样如果没有数据自动填充0.
第二种方法:用sql 的case语句实现
SELECT CASE WHEN count is null THEN '0' else count END as count,inputtime FROM `test` ps:日志http://www.telnote.cn
1.用辅助表是可以 我是想不用辅助表
2.我用了你第二个语句,还是不行呢
SELECT CASE WHEN count is null THEN '0' else count END as count,inputtime FROM `test` where inputtime >='2010-08-14' and inputtime <='2010-08-25'得到的结果是这样的
1 2010-08-18
2 2010-08-17
4 2010-08-18
6 2010-08-14
4 2010-08-15
3 2010-08-16
没有 19号之后的数据呢 可能你没理解我的意思 我是想即使没有19号的数据,也要列出来,为零即可
你这种效果用sql语句好像实现不了,应该要借助程序