相关疑难解决方法(0)

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

我正在开发一个投票的在线画廊,并有一个单独的图片和投票表(每次投票我都存储图片的ID和选民的ID).这些表格如下:PICTURE <--(1:n, using VOTE.picture_id)-- VOTE.我想查询图片表并按投票编号对输出进行排序.这就是我做的:

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
Run Code Online (Sandbox Code Playgroud)

当然,OFFSET对于不同的页面是不同的.

但是,在不同的页面上显示具有相同ID的图片.我想原因是排序,但不能构造任何更好的查询,这将不允许重复.有人可以给我一个暗示吗?

提前致谢!

sql

10
推荐指数
1
解决办法
2630
查看次数

标签 统计

sql ×1