
一个 sql 咨询
问题:
如何编写 sql 查询,以确定哪些用户查看了特定文章,以及这些用户查看过的其他最常浏览的文章?
背景:
存在一张记录每个用户浏览的文章(含 id)的表格。需求如下:
解决方案:
方法 1:异步任务
对于大量数据,使用异步任务定时统计每个文章关联文章的浏览次数是一个更好的选择。这可以避免过度加载数据库。
方法 2:sql 查询
如果必须使用 sql 一次性解决所有问题,可以使用如下查询:
-- 页面访问日志表
CREATE TABLE `read_log` (
`content_id` int,
`uid` int
);
-- 每个页面的访问用户访问过的页面在这些用户下的访问次数统计
SELECT
l.content_id AS l_content_id, -- 每个需要统计的页面ID,
-- l.uid_list l.uid_list AS '访问过 每个需要统计的页面ID 的用户组',
t.content_id AS t_content_id, -- 访问过 每个需要统计的页面ID 的用户组 仿问过的需要统计pv的页面ID
COUNT(t.uid) AS pv
FROM read_log t
JOIN (
SELECT
content_id,
GROUP_CONCAT(DISTINCT uid, '') AS uid_list
FROM read_log
GROUP BY
content_id
) l
ON FIND_IN_SET(t.uid, l.uid_list)
GROUP BY
l.content_id,
t.content_id
ORDER BY
l.content_id,
pv DESC;注意:如果需要在排名后只获取前 n 条数据,请使用额外的嵌套查询。
以上就是如何使用 SQL 查询找出哪些用户阅读了特定文章以及这些用户最常浏览的其它文章?的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号