我正在開發一個帶有投票的在線畫廊,併爲圖片和投票設置了單獨的表格(對於存儲圖片ID和選民的ID)。這些表格是這樣的:PICTURE <--(1:n, using VOTE.picture_id)-- VOTE
。我想查詢圖片表,並通過票數排序輸出。這是我做的:使用LIMIT/OFFSET在SQL中分頁有時會導致在不同頁面上出現重複問題
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
OFFSET對於不同的頁面當然是不同的。
但是,在不同的頁面上顯示具有相同ID的圖片。我想原因是排序,但不能構建任何更好的查詢,這將不允許重複。有人可以給我一個提示嗎?
在此先感謝!
這有幫助,謝謝! – 2010-01-16 15:40:56