我正在嘗試SELECT
尚未被某個用戶(user-id:uid
)所喜歡或不喜歡的隨機頁面。排除特定的SQL列嗎?
我的表結構:
OneNight_pages
:(ID,標題)OneNight_pages_likes
:(ID,PAGE_ID,UID狀態)
這就是我如何試圖得到一個隨機頁面:
SELECT
p.id AS page_id,
p.title,
SUM(CASE WHEN l.page_id = p.id AND status = '1' THEN 1 ELSE 0 END) AS likes,
SUM(CASE WHEN l.page_id = p.id AND status = '0' THEN 1 ELSE 0 END) AS dislikes
FROM OneNight_pages_likes l
LEFT JOIN OneNight_pages p on l.page_id = p.id
WHERE l.uid != '1'
GROUP BY page_id
ORDER BY rand()
LIMIT 1
但是,這仍然會顯示我已經喜歡或不喜歡的頁面,因爲WHERE l.uid != 1
不會影響排除整個l.page_id
(因爲對於特定的page_i,還有其他類似的和不喜歡的人) d)。
我想我需要解決這個與子查詢首先接收頁面ID或使用一些特定的算法?我還想過將所有喜歡和不喜歡的頁面作爲數組存儲在cookie或會話中,但我不知道這是否是正確或有效的方式?
你能提供樣本數據和預期結果嗎?難以理解... – sgeddes