Mysql 仅SQL偏移量
是否可以跳过前X行,并在一个查询中选择所有其他行? 就像这样:Mysql 仅SQL偏移量,mysql,sql,Mysql,Sql,是否可以跳过前X行,并在一个查询中选择所有其他行? 就像这样: abc def ghi jkl mno ========= start selecting all from here ========= pqr stu vwx yz 它将选择:pqr、stu、vwx、yz 我曾尝试使用LIMIT和OFFSET来实现这一点,但问题是表是动态的,我不知道应该设置哪一个限制(我不知道表中有多少行)。如果只需要最后N行,请尝试以下方法: SELECT field1, field2 FROM table
abc
def
ghi
jkl
mno
========= start selecting all from here =========
pqr
stu
vwx
yz
它将选择:pqr、stu、vwx、yz
我曾尝试使用LIMIT和OFFSET来实现这一点,但问题是表是动态的,我不知道应该设置哪一个限制(我不知道表中有多少行)。如果只需要最后N行,请尝试以下方法:
SELECT field1, field2 FROM table
ORDER BY some_column DESC
LIMIT N;
SELECT field1, field2 FROM table
ORDER BY some_column ASC
LIMIT 18446744073709551615 OFFSET X;
这将根据某些列的顺序提供最后几条记录
如果没有其他方法可以使用,您可以使用自动递增的主键(希望有一个)来建立行的顺序
如果您想跳过前X行(您在问题中指出)并获取所有行直到结束,请尝试以下操作:
SELECT field1, field2 FROM table
ORDER BY some_column DESC
LIMIT N;
SELECT field1, field2 FROM table
ORDER BY some_column ASC
LIMIT 18446744073709551615 OFFSET X;
对于后一种情况,请参见:
但是,如果您确实有一个自动递增的主键,并且它与要选择的行相对应,我建议您:
SELECT field1, field2 FROM table
WHERE id > X;
是否要限制特定记录,例如“pqr”?您所说的“动态”是什么意思?“动态”表示可以添加更多行。所以我不知道表中到底有多少行。我只想选择前5行之后的所有行。就这些。你能给我们一些主题的上下文应用程序吗?我想他可能想知道如何使用一些范围或任何东西来友好地设置LIMIT
,以便使用MySQL。没有办法动态地设置LIMIT
,好吧-查看链接问题了解更多信息。哇,这看起来很奇怪。我认为以某种方式计算表中的行数比减去偏移量(5)更优雅,这就是限制。但感谢您的回答,您完全可以从表中发出类似selectcount(*)的查询
首先获取行数,然后使用该行数计算限制
。我更喜欢一次查询而不是两次查询。@JYelton-是的,我认为这个解决方案无论如何都会更快,尽管它看起来有点难看。:-)