首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL:按顺序跳过条目,而不知道总输入量。

SQL:按顺序跳过条目,而不知道总输入量。
EN

Stack Overflow用户
提问于 2014-09-30 00:10:44
回答 2查看 54关注 0票数 0

标题有点混乱,但我想知道是否有一种方法可以执行这样的查询:

代码语言:javascript
复制
SELECT * FROM table ORDER BY timestamp LIMIT 10

然后只取第10项之后的项目(如果少于或等于10项,则为零)。

编辑--我想另一种方法是按时间戳、降序,然后以某种方式限制到0, (total-someNumber) --来排序它们。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-09-30 00:21:45

通过指定偏移量,可以获得指定数字之后的行。你把这个和极限结合起来。在MySQL中,您可以通过LIMIT [offset], limit来实现这一点。

示例-在最古老的10条记录之后获取10条记录:

代码语言:javascript
复制
SELECT * FROM table ORDER BY timestamp LIMIT 10, 10;  # Retrieve rows 11-20

示例-在最新的5条记录之后获得20条记录:

代码语言:javascript
复制
SELECT * FROM table ORDER BY timestamp DESC LIMIT 5, 20;  # Retrieve rows 6-25

如果你想在一个数字之后得到所有的行(例如。10)然后通过一个任意大的数字作为限制,因为这是该条款所要求的:

代码语言:javascript
复制
SELECT * FROM table ORDER BY timestamp LIMIT 10,18446744073709551615;  # Retrieve rows 11-BIGINT

注意:18446744073709551615是未签名BIGINT的最大值,是MySQL文档中提供的解决方案。

请参阅:http://dev.mysql.com/doc/refman/5.5/en/select.html

票数 3
EN

Stack Overflow用户

发布于 2014-09-30 00:29:21

我尝试类似于this,然后添加一个where子句,它跳过第一个n行(在本例中为n=10)。

例如,使用链接示例:

代码语言:javascript
复制
SELECT
    *
FROM
    (select @n := @n + 1 RowNumber, t.* from (select @n:=0) initvars, tbl t)
WHERE
    RowNumber > 10
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26110789

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档