在线等:查询排序语句理解!
我要的到的结果
3 汽车 汽车文章2 994
1 汽车 汽车文章1 300
5 财经 财经新闻2 455
2 财经 财经文章1 293
按照上边的7条数据,我只需要取出这4条,
而且是按先tag数量分类排序的,再按visitcount排序
而且只需要显示tag数量大于2的,访问次数visitcount数量最大的两个,
其他的tag=军事 和tag=游戏 的count=1,不需要显示
create table tb(id int, tag varchar(10), title varchar(20), visitcount int);
insert into tb values(1, '汽车 ', '汽车文章1 ', 300)
insert into tb values(2, '财经 ', '财经文章1 ', 293)
insert into tb values(3, '汽车 ', '汽车文章2 ', 994)
insert into tb values(4, '军事 ', '军事文章1 ', 32)
insert into tb values(5, '财经 ', '财经新闻2 ', 455)
insert into tb values(6, '游戏 ', '有心文章1 ', 332)
insert into tb values(7, '汽车 ', '汽车文章2 ', 234)
Select *
From tb As A
Where tag In(
select t.tag
from tb t
group by t.tag having count(tag)> 1)
And
(Select Count(*) From tb Where tag=A.tag And visitcount> =A.visitcount) <3
Order By tag Desc,visitcount Desc
---结果
/*
id tag title visitcount
----------- ---------- --------------- -----------
3 汽车 汽车文章2 994
1 汽车 汽车文章1 300
5 财经 财经新闻2 455
2 财经 财经文章1 293
(所影响的行数为 4 行)
-------------------------
请问: Select Count(*) From tb Where tag=A.tag And visitcount> =A.visitcount) < 3 如何理解呀
And visitcount> =A.visitcount 这种比较已经将数据记录都显示出来了,
< 3 ,如何理解呀
请高手指教!!!!!!
谢谢
------解决方案--------------------Select Count(*) From tb Where tag=A.tag And visitcount> =A.visitcount) < 3
取最大的两个. a <= 2
group by t.tag having count(tag)> 1
分组后必须有两个以上的才取. a> 1
a <=2
a> 1
两条件合起来为 a = 2