Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在SQL中使用LIMIT/OFFSET进行分页有时会导致不同页面上出现重复_Sql - Fatal编程技术网

在SQL中使用LIMIT/OFFSET进行分页有时会导致不同页面上出现重复

在SQL中使用LIMIT/OFFSET进行分页有时会导致不同页面上出现重复,sql,Sql,我正在开发一个带有投票的在线图库,并且有一个单独的图片和投票表(每次投票我都会存储图片ID和投票人ID)。与此相关的表格:PICTURE简单的解释是,您在查看不同页面时添加了一些数据或进行了一些投票 我相信如果你能按ID或创建日期分类,这个问题就会消失 也就是说,您的代码没有问题是否每页执行一个查询以显示?如果是,我怀疑数据库不能保证相同票数的项目的一致顺序。因此,如果两个项目的票数相同,第一个查询可能返回{item 1,item 2},第二个查询可能返回{item 2,item 1}。如果项目

我正在开发一个带有投票的在线图库,并且有一个单独的图片和投票表(每次投票我都会存储图片ID和投票人ID)。与此相关的表格:
PICTURE简单的解释是,您在查看不同页面时添加了一些数据或进行了一些投票

我相信如果你能按ID或创建日期分类,这个问题就会消失


也就是说,您的代码没有问题

是否每页执行一个查询以显示?如果是,我怀疑数据库不能保证相同票数的项目的一致顺序。因此,如果两个项目的票数相同,第一个查询可能返回
{item 1,item 2}
,第二个查询可能返回
{item 2,item 1}
。如果项目实际上是项目10和11,那么相同的项目可能会出现在第1页,然后出现在第2页

我曾经有过这样的问题。如果您也是这样,请在order by中附加一个额外的条款,以确保具有相同投票数的项目的顺序一致,例如:


ORDER BY picture.vote,picture.ID

在我的例子中,这个问题是由于ORDER BY子句中的空值造成的,我通过在ORDER BY子句中添加另一个唯一的ID字段以及其他字段来解决这个问题。

不是真的。我制作了一个测试脚本,它自动获取所有页面并打印显示图片的ID,副本仍然存在
SELECT
    picture.votes_number,
    picture.creation_date,
    picture.author_id,
    picture.author_nickname,
    picture.id,
    picture.url,
    picture.name,
    picture.width,
    picture.height,
    coalesce(anon_1."totalVotes", 0)
FROM picture
LEFT OUTER JOIN
    (SELECT
        vote.picture_id as pid,
        count(*) AS "totalVotes"
     FROM vote
     WHERE vote.device_id = <this is the query parameter> GROUP BY pid) AS anon_1
ON picture.id = anon_1.pid
ORDER BY picture.votes_number DESC
LIMIT 10
OFFSET 0