标题:请问一下这个SQL语句
只看楼主
lele2007
Rank: 5Rank: 5
来 自:广东省深圳
等 级:职业侠客
威 望:6
帖 子:1028
专家分:305
注 册:2007-9-4
结帖率:100%
 问题点数:0 回复次数:3 
请问一下这个SQL语句
select count(id) as count1,name from q1 where (select count(id) from q1 as m where m.name=q1.name)>2 group by name order by count(id) desc
我看不太懂这个SQL,这么多个where,请大家会的帮我解析下,谢谢
搜索更多相关主题的帖子: SQL 语句 name count select 
2008-07-25 10:47
yms123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:209
帖 子:12488
专家分:19042
注 册:2004-7-17
得分:0 
select count(id) as count1,name from q1 where (select count(id) from q1
查询 对id进行统计起别名count1和name字段在表q1条件是q1表的id统计的name字段等于q1表的name字段并且>2按name分组并按id降序排列
as m where m.name=q1.name)>2 group by name order by count(id) desc
这里用了子查询
不过这个SQL语句个人是越看越别扭,同一个表做子查询是一个问题,一般子查询都是不同的表但有关系的表进行子查询。
问题二在于m.name=q1.name这个条件好像是句废代码,因为本身子查询里的表是q1外面的那个表也是q1都是同一个表name肯定相等,为何还要做条件来限制?
另一个问题是count(id) desc这种写法个人是极为少见,count是统计函数统计后只有一个结果对这一个结果进行排序?没有必要吧?
2008-07-25 11:05
islet
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:89
帖 子:6548
专家分:0
注 册:2005-1-28
得分:0 
这应该是要查询name重复的记录吧
也就是Access这种数据库才用写这么复杂
2008-07-25 11:08
lele2007
Rank: 5Rank: 5
来 自:广东省深圳
等 级:职业侠客
威 望:6
帖 子:1028
专家分:305
注 册:2007-9-4
得分:0 
明白一些了!看到别人程序中的SQL语句,看不太明白,所以问一下的! 谢谢!

学习编程www.
2008-07-25 11:14



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




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

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