我正在开发一个投票的在线画廊,并有一个单独的图片和投票表(每次投票我都存储图片的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的图片.我想原因是排序,但不能构造任何更好的查询,这将不允许重复.有人可以给我一个暗示吗?
提前致谢!
ewe*_*nli 20
您是否每页执行一次查询才能显示?如果是,我怀疑数据库不保证对具有相同票数的项目的合理订单.因此,如果两个项目具有相同的投票数,则第一个查询可以返回{ item 1, item 2 }并且第二个查询可以返回{ item 2, item 1}.如果项目实际上是项目10和11,则相同的项目可能出现在第1页上,然后出现在第2页上.
我曾经遇到过这样的问题.如果这也是您的情况,请在订单附加一个附加条款,以确保具有相同投票号的项目的一致排序,例如:
ORDER BY picture.vote, picture.ID