【发布时间】:2014-05-01 15:28:10
【问题描述】:
我希望在 ANSI SQL 中实现分页查询。
我在 SQL Server 中尝试了以下查询,但它不允许:
select top 20 * from MyTable order by id
except
select top 10 * from MyTable order by id
但以下工作正常:
select top 20 * from MyTable
except
select top 10 * from MyTable order by id
例如:
input expected result
20 11
11 13
25 14
6 16
4 17
2 18
1 19
9 20
3 25
7
8
16
17
18
13
14
19
10
5
从上面的例子可以看出,如果我们不能编写第一个ORDER BY 子句,那么结果将不会有值 20、11、25。
【问题讨论】:
-
哇...
select *已经够糟糕了,但是当我们没有架构可以使用时,情况就更糟了。 -
@ebyrob 我使用 select * 只是为了说明,它可以是 * 以外的任何东西
-
@thunder nah,您确实有足够的信息在这里得到一个好的答案。我只是有心情。
-
@stakx 我正在寻找适用于所有数据库的东西。
-
实际上,
TOP不是 ANSI 标准,你的开局很糟糕。