日期:2014-05-18  浏览次数:20731 次

求SQL:相同数据根据记录的多少进行排序
如:
gno
88
7
7
7
4326
4326
11
11
11
11

结果:先据根据记录的多少进行排序,然后每条重复数据只要显示1条数据,按时间排序,最后发布时间排第一。
11(11有4条记录所以排第一)
77(77有3条记录所以排第二)
4326(4326有2条记录所以排第三)
88(88有1条记录所以排第最后)

------解决方案--------------------
SQL code
select f1,count(*) fc
from tb
group by f1
order by fc desc

------解决方案--------------------
/*
如:
gno
88
7
7
7
4326
4326
11
11
11
11
结果:先据根据记录的多少进行排序,
然后每条重复数据只要显示1条数据,
按时间排序,最后发布时间排第一。
11(11有4条记录所以排第一)
77(77有3条记录所以排第二)
4326(4326有2条记录所以排第三)
88(88有1条记录所以排第最后)
*/

go
if OBJECT_ID('tbl') is not null
drop table tbl
go
create table tbl(
gno varchar(10)
)
go
insert tbl
select '88' union all
select '7' union all
select '7' union all
select '7' union all
select '4326' union all
select '4326' union all
select '11' union all
select '11' union all
select '11' union all
select '11'

select gno,COUNT(*) as 记录条数 from tbl 
group by gno order by COUNT(*) desc

/*
这个是你要的结果??
gno 记录条数
11 4
7 3
4326 2
88 1
*/

------解决方案--------------------
SQL code
select gno from t1 
group by gno
order by count(gno) desc