用SQL如何查询第几条到第几条之间的数据?想不出来呢,网上的答案都不行的

用SQL中如何查第几条到第几条之间的数据?想不出来呢,网上的答案都不奏效。哪位兄弟姐妹会啊?... 用SQL中如何查第几条到第几条之间的数据?想不出来呢,网上的答案都不奏效。哪位兄弟姐妹会啊? 展开
 我来答
匿名用户
2011-07-15
展开全部
这好办,比如查询第10条到第20条数据,表是table1,列是lie1,lie2,那就是
select top 20 from table1 where lie1 not in(select top 10 lie1 from table1)
括号里是查出前10条数据,然后查出所以的前20条数据,排除前10条,就是第10条到第20条了啊!这是我们一直在用的方法,思路很清晰、、、
更多追问追答
追问
不奏效
追答
你的结果是什么、、
wangzhiqing999
2011-07-15 · TA获得超过1.6万个赞
知道大有可为答主
回答量:7048
采纳率:100%
帮助的人:3341万
展开全部
不同的数据库, 写法不一样。 例如我要检索 第11条到第20条

MySQL 数据库的最简单
SELECT * FROM 表 LIMIT 11, 10

SQL Server 的稍微折腾一些
SELECT
TOP 10
top20.*
FROM
(
SELECT
TOP 20
*
FROM

ORDER BY
排序字段 DESC
) AS top20
ORDER BY
top20.排序字段 ASC
追问
这种写法试过了,查询出在查询区间内的多少条,并没有实现第几条到第几条的数据,你想一下确实是那个结果
追答
你要实现那个 物理行的顺序, 也就是 不按任何字段排序的话. 那么要用 RowNumber 了。
如果你的数据库, 还是 Access,或者 SQL Server 2000 那就没办法了。

CREATE TABLE #temp (
id INT
);
GO

INSERT INTO #temp
SELECT 1 UNION ALL
SELECT 3 UNION ALL
SELECT 5 UNION ALL
SELECT 7 UNION ALL
SELECT 9 UNION ALL
SELECT 2 UNION ALL
SELECT 4 UNION ALL
SELECT 6 UNION ALL
SELECT 8 UNION ALL
SELECT 0 UNION ALL
SELECT 11 UNION ALL
SELECT 13 UNION ALL
SELECT 15 UNION ALL
SELECT 17 UNION ALL
SELECT 19 UNION ALL
SELECT 12 UNION ALL
SELECT 14 UNION ALL
SELECT 16 UNION ALL
SELECT 18 UNION ALL
SELECT 10 UNION ALL
SELECT 21 UNION ALL
SELECT 23 UNION ALL
SELECT 25 UNION ALL
SELECT 27 UNION ALL
SELECT 29 UNION ALL
SELECT 22 UNION ALL
SELECT 24 UNION ALL
SELECT 26 UNION ALL
SELECT 28 UNION ALL
SELECT 20
GO

SELECT
id
FROM
(
SELECT
row_number() OVER (order by (select 1)) AS no,
id
FROM #temp
) t
WHERE
no >= 11 AND no <=20
GO

id
-----------
11
13
15
17
19
12
14
16
18
10

(10 行受影响)

下面这种写法,速度上慢点,但是结果和上面的一样。
SELECT
top 10
*
FROM
#temp
WHERE
id NOT IN (SELECT top 10 id FROM #temp)
GO
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lwl2046
2011-07-15 · TA获得超过405个赞
知道小有建树答主
回答量:994
采纳率:0%
帮助的人:946万
展开全部
select top 20 from table1 where lie1 not in(select top 10 lie1 from table1)
SQL SERVER是这样写。不知道你是什么数据库。不过原理都是一样的。先查出大的集合,然后排除掉其中一部分,剩下的就是你要的了
追问
不奏效哦,从第10条开始查查出了第十条之后的20条,
追答
假设你的排序字段是lie1
select top 20 from table1 where lie1 not in(select top 10 lie1 from table1 order by lie1) order by lie1
而且lie1是不重复的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lzf7878
2011-07-15 · TA获得超过186个赞
知道答主
回答量:103
采纳率:0%
帮助的人:62.5万
展开全部
select * from (select *, rownum rowid from tablename where rownum<20)
where rowid >=10
这个原理和分页一样,具体到网上搜分页查询语句
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
olbdycsee
2011-07-16 · TA获得超过207个赞
知道答主
回答量:455
采纳率:0%
帮助的人:328万
展开全部
有个

ROW_NUMBER() OVER() 的函数, 可以取得行数,即 1,2,3,4,5

要 1 --> “第一条” 的话...

估计要去写个函数, 或者 CASE WHEN
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式