注册 登录
编程论坛 ASP技术论坛

请问一下这个SQL语句

lele2007 发布于 2008-07-25 10:47, 956 次点击
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,请大家会的帮我解析下,谢谢
3 回复
#2
yms1232008-07-25 11:05
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是统计函数统计后只有一个结果对这一个结果进行排序?没有必要吧?
#3
islet2008-07-25 11:08
这应该是要查询name重复的记录吧
也就是Access这种数据库才用写这么复杂
#4
lele20072008-07-25 11:14
明白一些了!看到别人程序中的SQL语句,看不太明白,所以问一下的! 谢谢!
1