我想基于一个序列例如在一个表上提取许多记录。 n x4。这意味着我需要0、4、8、12、16等...
仔细阅读我发现的最接近的内容:
SELECT * FROM table ORDER BY ID LIMIT n-1,1
我想看看是否可以仅使用一个查询来完成。
答案 0 :(得分:0)
如果您使用的是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;
答案 1 :(得分:0)
您可以使用mod = 0
select * from table where ID mod 4 = 0;
如果您的PK为整数或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;
答案 2 :(得分:0)
您可以使用MOD功能,它将两个值相除后的余数进行检查。 因此,您的查询将如下所示
SELECT *
FROM table
WHERE ID MOD 4 = 0 ORDER BY ID