MySQL中如何从tickets表选取每第5000个ID的记录
获取tickets表中每第5000个ID的记录
嗨,这个需求很明确,我分两种常见场景给你提供解决方案,你可以根据实际情况选择:
场景1:筛选ID为5000倍数的记录(比如ID=5000、10000、15000...)
这种情况直接利用取模运算就能实现,不同数据库的写法大同小异:
MySQL / PostgreSQL
SELECT * FROM tickets WHERE ID % 5000 = 0;
或者用更清晰的MOD函数写法:
SELECT * FROM tickets WHERE MOD(ID, 5000) = 0;
SQL Server
同样支持取模运算符,写法和上面一致:
SELECT * FROM tickets WHERE ID % 5000 = 0;
也可以用内置的MOD函数:
SELECT * FROM tickets WHERE MOD(ID, 5000) = 0;
场景2:按记录顺序每5000条取一条(不管ID是否连续)
如果你的ID不是连续递增的,或者你需要的是第5000条、第10000条记录(而不是ID刚好是5000的倍数),那就要用窗口函数来实现了,适用于支持窗口函数的数据库(MySQL 8.0+、PostgreSQL、SQL Server等):
SELECT * FROM ( SELECT *, ROW_NUMBER() OVER (ORDER BY ID) AS row_num FROM tickets ) AS sub_query WHERE row_num % 5000 = 0;
这里的ORDER BY ID是按ID排序来确定记录顺序,你也可以换成其他排序字段(比如创建时间created_at),根据你的业务需求调整即可。
需要注意的是,如果你的表数据量很大,建议给ID或者排序字段加索引,这样查询效率会更高哦~
内容的提问来源于stack exchange,提问作者Vicky Gill
相关产品推荐
相关产品推荐

