标题有点令人困惑,但我想知道是否有办法进行这样的查询:
SELECT * FROM table ORDER BY timestamp LIMIT 10
然后只接受第10个之后的那个(如果小于或等于10个条目,则为无)。
编辑我想另一种方法是按时间戳排序,降序,然后以某种方式限制为0, (total-someNumber)
。
答案 0 :(得分:3)
通过指定OFFSET,您可以获取指定数字后的行。你把它与限制结合起来。
在MySQL中,您可以使用LIMIT [offset], limit
实现此目的。
示例 - 在最早的10条记录之后获取10条记录:
SELECT * FROM table ORDER BY timestamp LIMIT 10, 10; # Retrieve rows 11-20
示例 - 在最新的5条记录之后获得20条记录:
SELECT * FROM table ORDER BY timestamp DESC LIMIT 5, 20; # Retrieve rows 6-25
如果你想获得一定数量后的所有行(例如10),那么你传递一个任意大的数字作为限制,因为条款要求它:
SELECT * FROM table ORDER BY timestamp LIMIT 10,18446744073709551615; # Retrieve rows 11-BIGINT
注意:18446744073709551615
是无符号BIGINT的最大值,在MySQL文档中作为解决方案提供。
答案 1 :(得分:0)
我尝试this之类的东西,然后添加一个跳过第一个n(在本例中为n = 10)行的where子句。
即。使用链接的示例:
SELECT
*
FROM
(select @n := @n + 1 RowNumber, t.* from (select @n:=0) initvars, tbl t)
WHERE
RowNumber > 10