用SQL如何查询第几条到第几条之间的数据?

用SQL如何查询第几条到第几条之间的数据?,第1张

不同的数据库,写法不一样。例如我要检索,第11条到第20条,MySQL数据库的最简单:

SELECT*FROM表LIMIT11,10

SQLServer的稍微折腾一些

SELECT

TOP10

top20.*

FROM

(

SELECT

TOP20

*

FROM

ORDERBY

排序字段DESC

)AStop20

ORDERBY

top20.排序字段ASC

结构化查询语言(StructuredQueryLanguage)简称SQL(发音:/ˈeskjuːˈel/"S-Q-L"),是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。

结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。

--从Table 表中取出第 m 条到第 n 条的记录:(Not In 版本)SELECT TOP n-m+1 * FROM Table WHERE (id NOT IN (SELECT TOP m-1 id FROM Table ))--从TABLE表中取出第m到n条记录 (Exists版本)SELECT TOP n-m+1 * FROM TABLE AS a WHERE Not Exists(Select * From (Select Top m-1 * From TABLE order by id) b Where b.id=a.id )Order by id以下两种方法都是实现提取数据库第20到第30条中间的十条记录的sql句子: select top 10 * from 表名 where ID字段 not in (select top 20 ID字段 FROM 表名 order by ID字段)行数假定由id决定(id最好是自动增加的序列)删除前10行delete from 表名 where id in(select top 10 id from 表名)删除10-20delete from 表名 where id in(select top 20 id from 表名)and id not in(select top 10 id from 表名)二、在MYSQL中,可以使用关键字LIMIT:SELECT * FROM table [条件语句] LIMIT [offset,] rowsLIMIT 子句可以被用于强制 SELECT 语句返回指定的记录数。LIMIT 接受一个或两个数字参数。参数必须是一个整数常量。

--从Table 表中取出第 m 条到第 n 条的记录:(Not In 版本)

SELECT TOP n-m+1 * FROM Table WHERE (id NOT IN (SELECT TOP m-1 id FROM Table ))

--从TABLE表中取出第m到n条记录 (Exists版本)

SELECT TOP n-m+1 * FROM TABLE AS a WHERE Not Exists

(Select * From (Select Top m-1 * From TABLE order by id) b Where b.id=a.id )

Order by id

--m为上标,n为下标,例如取出第8到12条记录,m=8,n=12,Table为表名

Select Top n-m+1 * From Table

Where Id(Select Max(Id) From

(Select Top m-1 Id From Table Order By Id Asc) Temp)

-----------------------------------------------------------------------------------------------------------------------------------------

表pictures中有两个字段:id与title。id是自动编号的­

表中有5条记录:1--p1,2--p2,3--p3,4--p4,5--p5­

一、找到了一个小规律

string sqlstr = "select top 4 * from pictures order by id desc "//查询结果p5,p4,p3,p2---说明是整个表先进行排序,再进行查询的­

string sqlstr = "select top 3 * from (select top 4 * from pictures order by id desc) "//-------p5,p4,p3­

string sqlstr = "select top 3 * from (select top 4 * from pictures order by id desc) order by id desc"//-------p5,p4,p3

string sqlstr = "select top 3 * from (select top 4 * from pictures order by id desc) order by id asc"//-------p2,p3,p4

二、获取单条记录:­

假设表中一共有counts条记录,现在想要查询第n条记录,则sql语句应是:­

select top 1 * from (select top (counts-n+1) * from pictures order by id desc) order by id asc­

第三条记录:­

string sqlstr = "select top 1 * from (select top 3 * from pictures order by id desc) order by id asc"//-------p3­

三、获取表中多条连续的记录­

假设表中一共有counts条记录,现在想要查询第n到第m条的记录,则sql语句应是:­

select top (m-n+1) * from (select top (counts-n+1) * from pictures order by id desc) order by id asc­

获取第二到第四条记录:­


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6824064.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-28
下一篇 2023-03-28

发表评论

登录后才能评论

评论列表(0条)

保存