这样一个简单的表,只有一个名为ID的int型字段。表中,某些ID重复出现多次,有的只出现一次,很显示,要列出所有出现次数大于1的ID,及其的次数,可以用如下SQL语句实现:

select ID, count(*)    from XXX    group by ID    having count(*) > 1

如果要知道这个结果的数据集的行数(也就是有多少个出现次数大于1的ID),应该是:

select count(*) from    ( select ID, count(*) as ct        from XXX        group by ID        having count(*) > 1    ) A

 注意最后一行,右括号后面的那个A,这个是临时数据集的别名,如果不指定这个别名,整句SQL的语法就是错误的(别名是什么不重要,重要的是必须要指定这个别名),也就是说,它不支持匿名的临时数据集。

此外,在MSSQL 2000上面,在临时数据集的count(*)这个匿名字段指定名字(as ct)的话,同样也是一个语法错误,据朋友验证,这个在MySQL上面不是错误,但同样要为临时数据集指定别名。


评论

该日志第一篇评论

发表评论

评论也有版权!