我正在尝试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