不奏效
追答你的结果是什么、、
追问出现错误的,在access里就是不行啊
追答那当然 我用的是sql server,每个数据库的语法不一样,但是思路是一样的,查出前20条,排除前10条,就是11到20条是吧!access我没用过,但是思路就是这样、我想你应该能明白吧!
追问不奏效哦,从第10条开始查查出了第十条之后的20条,
追答那我就不大清楚了,反正我们一直这样,一直奏效啊,你想想思路也是对的啊!
追问帮我想一下啊,你的方法在sql2000我也试过了
这种写法试过了,查询出在查询区间内的多少条,并没有实现第几条到第几条的数据,你想一下确实是那个结果
追答你要实现那个 物理行的顺序, 也就是 不按任何字段排序的话. 那么要用 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
不奏效哦,从第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是不重复的。