在sql中,要求id每隔m取1条数据,一共取出n条数据,这个sql可以这么写:
SELECT id FROM user WHERE id % m = 1 LIMIT n;
将语句中的m和n替换成需要的值,比如我想要每隔3条取一条数据,一共取10条;
SELECT id FROM user WHERE id % 3 = 1 LIMIT 10;
输出
+----+
| id |
+----+
| 1 |
| 4 |
| 7 |
| 10 |
| 13 |
| 16 |
| 19 |
| 22 |
| 25 |
| 28 |
+----+
10 rows in set (0.34 sec)
如果想起始值不是从1开始,比如我想要从2开始,调整为
SELECT id FROM user WHERE id % 3 = 2 LIMIT 10;
输出
+----+
| id |
+----+
| 2 |
| 5 |
| 8 |
| 11 |
| 14 |
| 17 |
| 20 |
| 23 |
| 26 |
| 29 |
+----+
10 rows in set (0.00 sec)
实际就是使用取模计算来确定取值范围,当然还可以在 WHERE
语句中加入更多的条件来满足需要。