我想从具有条件的特定起始点选择MySql中的特定行数。起点应该是一个变量。 我的问题是我没有从哪里开始。
用语言: “在”状态“等于1的前5行之后开始,然后从那里给出接下来的5行,其中”状态“等于1”。
示例数据:
-----------------------
| id | title | status |
-----------------------
| 1 | Test | 1 |
| 2 | Test | 0 |
| 3 | Test | 1 |
| 4 | Test | 0 |
| 5 | Test | 1 |
| 6 | Test | 1 |
| 7 | Test | 0 |
| 8 | Test | 1 |
| 9 | Test | 1 |
| 10 | Test | 1 |
| 11 | Test | 1 |
| 12 | Test | 1 |
| 13 | Test | 0 |
| 14 | Test | 1 |
| 15 | Test | 0 |
第一个案例
我想要五行,状态等于1,从头开始。 (起始变量为0)。
预期数据:
-----------------------
| id | title | status |
-----------------------
| 1 | Test | 1 |
| 3 | Test | 1 |
| 5 | Test | 1 |
| 6 | Test | 1 |
| 8 | Test | 1 |
第二种情况
现在我需要接下来的5行,其中status等于1。 (起始变量为5)。
预期数据:
-----------------------
| id | title | status |
-----------------------
| 9 | Test | 1 |
| 10 | Test | 1 |
| 11 | Test | 1 |
| 12 | Test | 1 |
| 14 | Test | 1 |
我怎样才能实现这个目标?
答案 0 :(得分:1)
使用LIMIT子句。第一个参数是您希望开始接收结果的完整结果集中的索引。第二个参数是您想要的结果数。所以要获得前5个结果:
SELECT * FROM my_table WHERE status = 1 ORDER BY id LIMIT 0,5
获得下一个5:
SELECT * FROM my_table WHERE status = 1 ORDER BY id LIMIT 5,5