【发布时间】:2016-07-28 02:46:06
【问题描述】:
我正在尝试SELECT某个用户(用户 ID:uid)尚未喜欢或不喜欢的随机页面。
我的表结构:
OneNight_pages: (id, title) OneNight_pages_likes: (id, page_id, uid, status)
这就是我尝试获取随机页面的方式:
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_id 还有其他喜欢和不喜欢的人)。
我想我需要先使用子查询来解决这个问题,以便先接收页面 id 还是使用一些特定的算法?我还想过将所有喜欢和不喜欢的页面作为数组存储在 cookie 或会话中,但我不知道这样做是否正确或有效?
【问题讨论】:
-
您能提供样本数据和预期结果吗?难以理解...