首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

求一SQL语句,一句话写完解决方法

2012-01-20 
求一SQL语句,一句话写完查询表中不同目录分类(字段假设为cata)的最新8条记录,按降序排列,结果为:IDCATA...

求一SQL语句,一句话写完
查询表中不同目录分类(字段假设为cata)的最新8条记录,按降序排列,结果为:

ID CATA ...
=============
9 Toy
8 Toy
7 PC
6 PC
...

[解决办法]
select * from tab where (select count(1) from tab where id=tab.id and cata=tab.cata)<8
[解决办法]
对于这种“分组提取TOP(N)条记录”的问题,似乎只有这种解决方案,如果效率低,在索引方面想象办法了。

如可以对CATA和ID做一个复合聚集索引,CATA正序,ID逆序,查找的时候就可以省略排序:
select * from 表 a where id in (select top 8 ID from 表 where CATA= a.CATA) and CATA IN (1,2,3,4)

但插入或更新数据会慢一些,关键你怎么取这个平衡点了。

另:或许有效率更高的方法我不知道,以我的能力,就这样了:)

热点排行