急救!!sql的group by分组如何去除having条件count(name>1)中不符合条件的name,使其不被统计。

如:一条记录状态位以为0,表示这条记录已过期不能使用了,可是数据库中还占着一条记录,在使用count()统计时这条记录仍能被统计在内,如何才能把它去除(每条记录有一个状态... 如:一条记录状态位以为0,表示这条记录已过期不能使用了,可是数据库中还占着一条记录,在使用count()统计时这条记录仍能被统计在内,如何才能把它去除(每条记录有一个状态位status标记记录是否有用)
FROM CustomerInfo AS tb WHERE tb.status != '0' AND tb.customerName IN(SELECT customerName FROM CustomerInfo GROUP BY customerName HAVING COUNT(customerName)>1)

为了查找重名的用户
展开
 我来答
6112562a
2014-09-25 · TA获得超过140个赞
知道答主
回答量:54
采纳率:100%
帮助的人:17.3万
展开全部

分组统计时需要将数据查询出来,以视图的方式存起来,然后在视图中进行分组统计就行了。

举例:(MySql)

数据为:

筛选:

SELECT COUNT( id ) 
FROM (
SELECT * 
FROM `category` 
WHERE other = "1"
) AS viewA
GROUP BY id

得到

count(id)

3

4

追问
我要在JAVA代码中使用,不是在数据库中查询
追答
同样疑惑,是否直接查出status不为0的记录就行了?
gx491971305
2014-09-25 · TA获得超过122个赞
知道答主
回答量:42
采纳率:0%
帮助的人:26.3万
展开全部
你的意思是不是有个字段是状态位,然后状态为0的在统计的时候不做统计,是吗,如果是这样的话,你直接给后面价格where条件去掉状态是0就不就行了,不知道理解的对不对
追问
语句是这样的FROM CustomerInfo AS tb WHERE tb.status != '0'  AND tb.customerName 
IN(SELECT customerName FROM CustomerInfo GROUP BY customerName HAVING
COUNT(customerName)>1)
追答
为什么后面跟两个条件,不是说status不等于0就行了吗直接前面统计就行了啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
showtime622
2014-09-25 · TA获得超过122个赞
知道小有建树答主
回答量:148
采纳率:0%
帮助的人:112万
展开全部
不知道你那个group by 后面的东西要怎么弄,没看懂,不行就用一个笨的方法,肯定好用
就是 声明一个临时表
declare @temp table(name, ...)
insert into @temp
select * from table1
where status <> 0

然后基于这个@temp 再做
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
殇忄路
推荐于2017-11-26 · TA获得超过561个赞
知道小有建树答主
回答量:478
采纳率:81%
帮助的人:331万
展开全部
加个where 条件不行么,where status <> 0
如果不行的话,就写子查询,
先筛选where status <> 0
再group by
追问
使用having后还能使用where吗?
追答
在group by 之前用
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
a857052346
2014-09-25 · TA获得超过192个赞
知道答主
回答量:104
采纳率:0%
帮助的人:40.7万
展开全部
where 条件中加上 status != 0
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式