MySql选择具有start和condition

时间:2016-04-25 17:53:27

标签: mysql select range conditional-statements

我想从具有条件的特定起始点选择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   |

我怎样才能实现这个目标?

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

等等。另见:http://dev.mysql.com/doc/refman/5.5/en/select.html