如何堆栈mysql查询结果以选择一行接一行

时间:2017-05-05 10:36:07

标签: php mysql database

请问如何在不重复同一行的情况下一次查询一行数据库表,直到选中所有行为止。

E.g

我希望查询在第一次选择第一行,第二行选择第二行,直到选中所有行。注意我不想使用随机选择,结果可能会重复。

提前谢谢

2 个答案:

答案 0 :(得分:0)

mysql有一个OFFSET选项,可以完美地满足您的需求(不是我理解您为什么要做您想做的事情)。例如

$offset = 0;
$query = 'SELECT * FROM my_table LIMIT 1 OFFSET='. $offset;
$offset++;
$query = 'SELECT * FROM my_table LIMIT 1 OFFSET='. $offset;//offset is now 1
$offset++;
$query = 'SELECT * FROM my_table LIMIT 1 OFFSET='. $offset;//offset is now 2

我认为在你的情况下你会把它扔掉。我只是按照上面的说明来说明这个概念。或者你可能会传递$ offset作为参数。无论哪种方式,这应该给你一个好主意

抵消有什么作用?它基本上忽略了偏移计数之前的记录。所以,如果我有记录1,2,3,4,5并且我从此列表中选择偏移量为2,我将获得3,4,5作为我的列表。

W3 Will explain it better than me

所以这个问题与API请求和响应有关

您对第一个api请求的回复应包含last_offset。告诉您的消费者将偏移作为参数传递给他们的请求。验证和卫生参数偏移后my.api.com?offset=1,您可以在查询中包含该值,否则使用默认偏移量0

如果他们在最后一个回复中收到last_offset = 2,他们应该在下一个请求时传递offset = 3.

答案 1 :(得分:0)

一种方法是使表的主键成为从任意数字开始的数字序列。 掌握起始指数。 在编写sql查询时,只需编写一个循环并使where = id + 1.这将一次为您提供每行。