MySQL-如何根据特定顺序进行记录

时间:2019-05-14 05:57:16

标签: mysql

我想基于一个序列例如在一个表上提取许多记录。 n x4。这意味着我需要0、4、8、12、16等...

仔细阅读我发现的最接近的内容:

SELECT * FROM table ORDER BY ID LIMIT n-1,1

我想看看是否可以仅使用一个查询来完成。

3 个答案:

答案 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