仅限SQL偏移量

时间:2011-08-10 22:17:42

标签: mysql sql

是否可以跳过X第一行,并在一个查询中选择所有其他行? 像那样:

abc
def
ghi
jkl
mno
========= start selecting all from here =========
pqr
stu
vwx
yz

它将选择:pqr,stu,vwx,yz

我试图用LIMIT和OFFSET完成它,但问题是表是动态的,我不知道应该放哪个LIMIT(我不知道表中有多少行)。

1 个答案:

答案 0 :(得分:4)

如果你只想要最后N行,试试这个:

SELECT field1, field2 FROM table
ORDER BY some_column DESC
LIMIT N;

这会根据some_column的顺序为您提供最后几条记录。

如果不能使用任何其他主键,您可以使用自动递增主键(希望有一个)来建立行的顺序。

如果您想要跳过前X行(您在问题中指明)并获取所有行直到结束,请尝试以下操作:

SELECT field1, field2 FROM table
ORDER BY some_column ASC
LIMIT 18446744073709551615 OFFSET X;

对于后一种情况,请参阅:MySQL Offset Infinite Rows

但是,如果你有一个自动递增的主键,并且它与你想要选择的行相对应,我建议:

SELECT field1, field2 FROM table
WHERE id > X;