技术文摘
MySQL 如何查询文章及其最新 5 条评论
2025-01-14 17:59:40 小编
在网站开发中,常常需要实现查询文章及其最新的 5 条评论的功能,MySQL 作为广泛使用的关系型数据库,为我们提供了有效的解决方案。
我们要明确数据库的表结构。通常会有两张表,一张是文章表(假设为 articles),包含文章的基本信息,如文章 ID(article_id)、标题(title)、内容(content)等;另一张是评论表(假设为 comments),包含评论 ID(comment_id)、文章 ID(article_id)、评论内容(comment_content)以及评论发布时间(create_time)等字段。通过文章 ID 建立两张表之间的关联。
接下来,我们使用 SQL 查询语句来获取所需的数据。使用 JOIN 操作将 articles 表和 comments 表连接起来,以确保评论与对应的文章正确关联。
SELECT
a.article_id,
a.title,
a.content,
c.comment_id,
c.comment_content,
c.create_time
FROM
articles a
JOIN
(
SELECT
article_id,
comment_id,
comment_content,
create_time,
-- 给每个文章的评论按时间降序排名
ROW_NUMBER() OVER (PARTITION BY article_id ORDER BY create_time DESC) AS rn
FROM
comments
) c
ON
a.article_id = c.article_id
WHERE
c.rn <= 5;
在上述查询中,我们使用了子查询和窗口函数 ROW_NUMBER()。子查询中,通过 PARTITION BY article_id 将评论按文章分组,然后 ORDER BY create_time DESC 对每个分组内的评论按创建时间降序排列,并使用 ROW_NUMBER() 给每个评论分配一个排名 rn。
主查询部分通过 JOIN 将 articles 表和子查询的结果连接起来,最后通过 WHERE c.rn <= 5 筛选出每个文章排名前 5 的评论。
这样,我们就可以从 MySQL 数据库中高效地查询到文章及其最新的 5 条评论。掌握这种查询方法,能够极大地提升我们处理网站中文章与评论关系数据的能力,为用户提供更优质的浏览体验,同时也为网站开发中复杂数据查询的实现奠定坚实基础。
- JavaScript 构建简易笔记应用程序
- 双十一预售已启,最终赢家是谁?
- 基于 Transformer 构建推荐系统
- 网络工程师的 Golang 学习:布尔值、比较与逻辑运算符
- 云原生分布式 PostgreSQL 与 Citus 集群于 Sentry 后端的实践
- 别再误解 synchronized 是重量级锁,看这篇文章
- 未入职,这位未来博导为学生规划高效学习之路
- 轻松掌握契约测试
- 线上生产环境 JVM 内存泄露处理经验:熬夜通宵总结
- 解析 Golang 中的 Make 和 New 函数
- 解析近期火爆的京东抢购飞天茅台现象:从架构原理出发
- Maven 打包第三方公共 Jar 包的方法
- Rust 中 12 个必试的杀手级库,先为您介绍几个!
- 优秀后端必备的开发好习惯,你掌握了吗?
- Go 语言 Errgroup 库的使用与原理