首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL -如何根据特定序列进行记录

问MySQL -如何根据特定序列进行记录
EN

Stack Overflow用户
提问于 2019-05-14 13:57:16
回答 3查看 42关注 0票数 0

我想根据一个序列提取表中的一些记录,例如n x 4。这意味着我需要0,4,8,12,16,等等……

通读我找到的与我正在寻找的最接近的是:

代码语言:javascript
复制
SELECT * FROM table ORDER BY ID LIMIT n-1,1

我想看看是否有可能只用一个查询就能完成。

EN

回答 3

Stack Overflow用户

发布于 2019-05-14 14:00:01

如果您使用的是MySQL 8+,则可以在此处使用ROW_NUMBER:

代码语言:javascript
复制
WITH cte AS (
    SELECT *, ROW_NUMBER() OVER (ORDER BY ID) - 1 rn
    FROM yourTable
)

SELECT *
FROM cte
WHERE rn MOD 4 = 0
ORDER BY ID;
票数 0
EN

Stack Overflow用户

发布于 2019-05-14 14:01:02

您可以使用mod = 0

代码语言:javascript
复制
select * from table where ID mod 4 = 0;

如果你的PK是integer或rowID,你可以简单地使用上面的查询。否则,必须在不使用row_number的情况下手动计数。

查询详细说明,

代码语言:javascript
复制
select * from (SELECT t.*, 
       @rowid := @rowid + 1 AS ID
  FROM TABLE t, 
       (SELECT @rowid := 0) dummy) A where A.ID mod 4 = 0;
票数 0
EN

Stack Overflow用户

发布于 2019-05-14 14:31:13

你可以使用MOD函数,它检查两个值除后的余数。因此,您的查询将如下所示

代码语言:javascript
复制
SELECT * 
FROM table
WHERE ID MOD 4 = 0  ORDER BY ID
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56123851

复制
相关文章

相似问题

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