捐款表tb_donation的结构如下:
id name direction amount
1 a 地震 200
2 a 旱灾 400
3 a 地震 400
5 b 地震 200
9 b 旱灾 200
11 c 地震 200
... ... ... ...
... ... ... ...
... ... ... ...
1.查询第30行至40行的数据(其中不可根据id来查,因为id并不一定连续)
select top 40 * from tb_donation
where id is not in (select top 30 id from tb_donation)
这个查询语句查到的结果是40行而不是30行
应改成:
select top 10 * from tb_donation
where id is not in(select top 30 id from tb_donation)
原因:top,group by,havaing 等都是对结果集进行过滤。
顺便说下:也可以通过row_number()函数来实现