我想根据一个序列提取表中的一些记录,例如n x 4。这意味着我需要0,4,8,12,16,等等……
通读我找到的与我正在寻找的最接近的是:
SELECT * FROM table ORDER BY ID LIMIT n-1,1我想看看是否有可能只用一个查询就能完成。
发布于 2019-05-14 14:00:01
如果您使用的是MySQL 8+,则可以在此处使用ROW_NUMBER:
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;发布于 2019-05-14 14:01:02
您可以使用mod = 0
select * from table where ID mod 4 = 0;如果你的PK是integer或rowID,你可以简单地使用上面的查询。否则,必须在不使用row_number的情况下手动计数。
查询详细说明,
select * from (SELECT t.*,
@rowid := @rowid + 1 AS ID
FROM TABLE t,
(SELECT @rowid := 0) dummy) A where A.ID mod 4 = 0;发布于 2019-05-14 14:31:13
你可以使用MOD函数,它检查两个值除后的余数。因此,您的查询将如下所示
SELECT *
FROM table
WHERE ID MOD 4 = 0 ORDER BY IDhttps://stackoverflow.com/questions/56123851
复制相似问题