You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL查询需求:获取各博客分类下最新4篇博客

按分类获取最新4篇博客的SQL实现

适用支持窗口函数的数据库(MySQL 8+、PostgreSQL、SQL Server等)

使用ROW_NUMBER()窗口函数可以高效实现每个分类取最新4篇的需求,同时保留两张表的关联:

SELECT b.*, bc.*
FROM (
    SELECT 
        *,
        -- 按分类分组,每组内按发布日期降序编号
        ROW_NUMBER() OVER (PARTITION BY blog_category ORDER BY blog_posting_date DESC) AS row_num
    FROM blogs
) b
INNER JOIN blog_categories bc 
    ON b.blog_category = bc.category_id
-- 筛选每个分类的前4条最新记录
WHERE b.row_num <= 4
-- 按分类ID、发布日期降序排序结果
ORDER BY bc.category_id, b.blog_posting_date DESC;

适用不支持窗口函数的旧版数据库(如MySQL 5.x)

如果你的数据库不支持窗口函数,可以用关联子查询的方式实现:

SELECT b.*, bc.*
FROM blogs b
INNER JOIN blog_categories bc 
    ON b.blog_category = bc.category_id
WHERE (
    -- 统计同分类下发布时间晚于等于当前博客的数量
    SELECT COUNT(*)
    FROM blogs b2
    WHERE b2.blog_category = b.blog_category
      AND b2.blog_posting_date >= b.blog_posting_date
) <= 4
ORDER BY bc.category_id, b.blog_posting_date DESC;

说明

  • 由于blogs.blog_category是关联blog_categories.category_id的外键,已经天然保证了每篇博客属于其关联的分类,无需额外添加验证条件。
  • 两种方法都会返回所有分类下的最新4篇博客,替代了你原来仅查询分类ID为1的逻辑。

内容的提问来源于stack exchange,提问作者Ranish Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 05:17:14