取表的前10条记录
with a as(select *,row_number()over(order by department)rn from _SucceedStaff )
select * from a where rn<=10
取表的任意中间几行的记录eg:10-30
with a as(select *,row_number()over(order by department)rn from _SucceedStaff )
select * from a where rn>=10 and rm<=30
附:常用几种数据库,取前10条记录的sql语句写法
http://blog.csdn.net/lzz313/archive/2006/12/19/1449572.aspx
access:
select top (10) * from table1 where 1=1
db2:
select column from table where 1=1 fetch first 10 rows only
mysql:
select * from table1 where 1=1 limit 10
sql server:
读取前10条:select top (10) * from table1 where 1=1
读取后10条:select top (10) * from table1 order by id desc
oracle:
select * from table1 where rownum<=10
取每日日期的前十条记录
SQL表列如下:
单号 日期
1 2011-09-10
2 2011-09-10
select * from tb a where 单号 in(select top 10 单号 from tb where 日期=a.日期 order by 单号)
select * from ( select *,rank () over(partition by day(日期) order by 日期) rk from tb ) t where t.rk<=10
select * from(select *,row_number()over(order by name)rn from _SucceedStaff )t where t.rn<=10(对比上面)