请问如何在不重复同一行的情况下一次查询一行数据库表,直到选中所有行为止。
E.g
我希望查询在第一次选择第一行,第二行选择第二行,直到选中所有行。注意我不想使用随机选择,结果可能会重复。
提前谢谢
答案 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.这将一次为您提供每行。