标题:关于一条语句返回多个count值
只看楼主
lovechunhuip
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2016-7-12
 问题点数:0 回复次数:10 
关于一条语句返回多个count值
SELECT COUNT(time) FROM `aaaa` WHERE `time` >= '2016/1/1 0:00:00' AND `time` <= '2016/7/1 23:59:59' and time like '% 13:%';

SELECT COUNT(time) FROM `aaaa` WHERE `time` >= '2016/1/1 0:00:00' AND `time` <= '2016/7/1 23:59:59' and time like '% 14:%';

SELECT COUNT(time) FROM `aaaa` WHERE `time` >= '2016/1/1 0:00:00' AND `time` <= '2016/7/1 23:59:59' and time like '% 18:%';

这三条语句怎么能合成一个语句呢?  其实是前边的条件都是一样的,就是最后那个不一样
搜索更多相关主题的帖子: count 
2016-07-12 13:14
mywisdom88
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:0 
用 union all 来把你3个查询合并起来。如:
SELECT COUNT(time) FROM `aaaa` WHERE `time` >= '2016/1/1 0:00:00' AND `time` <= '2016/7/1 23:59:59' and time like '% 13:%'
union all
SELECT COUNT(time) FROM `aaaa` WHERE `time` >= '2016/1/1 0:00:00' AND `time` <= '2016/7/1 23:59:59' and time like '% 14:%'
union all
SELECT COUNT(time) FROM `aaaa` WHERE `time` >= '2016/1/1 0:00:00' AND `time` <= '2016/7/1 23:59:59' and time like '% 18:%'
2016-07-12 13:38
mywisdom88
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:0 
SELECT COUNT(time) FROM `aaaa` WHERE `
 (time` >= '2016/1/1 0:00:00' AND `time` <= '2016/7/1 23:59:59' and time like '% 13:%') OR
 (time` >= '2016/1/1 0:00:00' AND `time` <= '2016/7/1 23:59:59' and time like '% 14:%') OR
 (time` >= '2016/1/1 0:00:00' AND `time` <= '2016/7/1 23:59:59' and time like '% 18:%')
也可以
2016-07-12 13:40
lovechunhuip
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2016-7-12
得分:0 
回复 2楼 mywisdom88
非常感谢,好用了。我这个的本意是查询一年中某些个月的记录个数的,我的想法是不是太过粗鲁和费时了,有没有更简单的方法呢?
2016-07-12 13:53
mywisdom88
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:0 
以下是引用lovechunhuip在2016-7-12 13:53:14的发言:

非常感谢,好用了。我这个的本意是查询一年中某些个月的记录个数的,我的想法是不是太过粗鲁和费时了,有没有更简单的方法呢?

如果,只是查询某个月的记录数,可以简化,查2016年,1,3,5,7月的记录数
SELECT COUNT(time) FROM `aaaa` WHERE `year(time) =2016 and (month(time)=1 or month(time)=3 or month(time)=5 or month(time)=7)
2016-07-12 17:58
lovechunhuip
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2016-7-12
得分:0 
回复 5楼 mywisdom88
谢谢您,不好意思,我是个初学者,试了您给的这个语句,出现的错误是 Unknown column 'year(time) =2016 and (month(time)=1 or month(time)=3 or month(time)=5 or month(time)=7)' in 'where clause'    这难道是单独定义年月日什么的吗,我在数据库里定义的字段名是time,类型是datatime,  2016-06-13 14:21:33这样的
2016-07-13 10:13
mywisdom88
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:0 
declare @time datetime
set @time=getdate()
select year(@time)as 年,month(@time)as 月,day(@time)as 日

2016-07-13 11:27
mywisdom88
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:0 
--year(),month(),day()分别是取年,月,日的函数
create table test(id int,name varchar(20),dt datetime)
insert into test(id,name,dt) values(1,'张三','2016-07-13')
insert into test(id,name,dt) values(2,'李四','2016-07-14')
select id,name,year(dt) as 年,month(dt) as 月,day(dt) as 日 from test where year(dt)=2016 and month(dt)=7 and day(dt)=13

2016-07-13 11:46
lovechunhuip
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2016-7-12
得分:0 
回复 8楼 mywisdom88
版主太给力了,非常感谢,彻底解决了我的问题!
2016-07-13 14:22
zjh072144
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2016-7-16
得分:0 
版主,果然厉害,有没有关于SQL的资料分享下,我感觉数据库SQL这一块 很薄弱。
2016-07-19 19:29



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-466857-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.055884 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved