SqlServer 第31到第40条记录的各种玩法

--两次对表A查询效率较低
select top 10 *
from A
where ID not in (select top 30 ID from A)

--外层查询没有对表A查询,效率大有提高
select top 10 *
from (select top 40 * from A order by ID) as t

order by t.ID desc

--ROW_NUMBER()函数效率更高,sqlserver2005以及以上版本中才可以使用
select *

from (select ROW_NUMBER() over(order by ID) as ‘sequence‘,A.* from A ) as t

where t.sequence between 31 and 40

SELECT * FROM A Order by ID OFFSET 30 ROWS FETCH NEXT 10 ROWS ONLY
时间: 2024-10-27 07:49:18

SqlServer 第31到第40条记录的各种玩法的相关文章

关于Oracle,sqlserver,mysql中查询10-20条记录的写法

一: oracle数据库写法: 1:select * from (select rownum rn ,* from 表名 where?rownum<20?) a? ?where a.rn>10 2:select * from 表名 where rownum<20 minus select * from 表名 where rownum<10 ? 二:SqlServer数据库写法: 1:select top 20 * from tablename where id not?exists

怎么查询数据库中第30到40条记录呢? 通过ID,查询当前第30-40条记录 注意,ID不是顺序的

http://blog.csdn.net/lee576/article/details/5812347 http://bbs.csdn.net/topics/190070614

SQLServer 分组查询相邻两条记录的时间差

原文:SQLServer 分组查询相邻两条记录的时间差 首先,我们通过数据库中表的两条记录来引出问题,如下图 以上为一个记录操作记录的表数据.OrderID为自增长列,后面依次为操作类型,操作时间,操作人. 现在的问题是:要求筛选出数据库中从“接收”到“送出”的时间差超过2天的全部记录.即如上图两笔单据中,红色框既是要筛选出的,绿色框为正常过滤的. 为了定位相邻记录,方法为给查询语句的返回记录加个自动编号列放入临时表中,再对临时表进行操作. --1.首先查出表中符合條件的所有信息 select

从SQLSERVER/MYSQL数据库中随机取一条或者N条记录

原文:从SQLSERVER/MYSQL数据库中随机取一条或者N条记录 从SQLSERVER/MYSQL数据库中随机取一条或者N条记录 很多人都知道使用rand()函数但是怎麽使用可能不是每个人都知道 建立测试表 USE [sss] GO CREATE TABLE RANDTEST(ID INT DEFAULT RAND()*100,NAME NVARCHAR(200) DEFAULT 'nihao') GO CREATE INDEX IX_RANDTEST_ID ON RANDTEST(ID)

sqlserver 脚本 多条记录遍历

临时表方式实现多条记录遍历 declare @oper_cart_item_id bigint; declare @oper_cart_id bigint; declare @the_last_changed_date datetime; declare @oper_cust_id int; select * , 0 as flag into #shoppingcart_temp from deleted; while exists (select top 1 1 from #shoppingc

[mysql] 先按某字段分组再取每组中前N条记录

From: http://blog.chinaunix.net/uid-26729093-id-4294287.html 请参考:http://bbs.csdn.net/topics/330021260 create table t2 (    id int primary key,    gid    char,    col1    int,    col2    int) engine=myisam; insert into t2 values (1,'A',31,6),(2,'B',25

MySQL取每组的前N条记录

一.对分组的记录取前N条记录:例子:取前 2条最大(小)的记录 1 1.用子查询: 2 SELECT * FROM right2 a WHERE 2> 3 (SELECT COUNT(*) FROM right2 b WHERE b.id=a.id AND b.account>a.account) 4 ORDER BY a.id,a.account DESC 5 2.用exists半连接: 6 SELECT * FROM right2 a WHERE EXISTS 7 (SELECT COUN

三大数据库如何获取表中的第m条到第n条记录(n大于m)

数据库获取表中的第m条到第n条记录(n>m) 1.oracle数据库:(注:tableName.id指的是tableName的主键) select * from (select tableName.*,rownum as con from tableName where rownum <= m order by tableName.id desc) where con >= n; 2.SQLServer数据库:(注:tableName.id指的是tableName的主键) 实现原理解释:

对Android开发者有益的40条优化建议

下面是开始Android编程的好方法: 找一些与你想做事情类似的代码 调整它,尝试让它做你像做的事情 经历问题 使用StackOverflow解决问题 对每个你像添加的特征重复上述过程.这种方法能够激励你,因为你在保持不断迭代,不经意中你学到了很多.然而,当你发布应用时你还要做一些更深入的事情. 从一些可正常工作的代码到一个可怕的应用程序是一个巨大的跳跃,相比iOS平台Android更是如此 .当在iOS上发布应用时只是在一个设备上跳跃–你的手机–对很多设备而言都很相似–同样大小的屏幕,都有很好