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

如何通过SQL实现网站展示最新5条新闻并自动替换旧新闻?

获取最新5条新闻的SQL实现方案

嘿,这个需求其实挺 straightforward 的,用基础的排序加行限制就能轻松搞定,而且完全不会影响数据库里的历史数据——只是查询的时候只返回最新的5条而已。下面给你拆解具体实现:

核心逻辑

我们需要先把新闻按发布日期从新到旧排序,然后只截取前5条记录。这样每次页面加载时执行这个查询,就能自动展示最新的5条;当新文章发布后,最旧的那条会被挤出前5,但它依然好好存在数据库里。

通用SQL写法(适用于MySQL、PostgreSQL等多数数据库)

假设你的新闻表名叫 news,存储发布日期的字段是 publish_date(类型建议用 datetime 或 timestamp),基础查询语句如下:

SELECT * 
FROM news
ORDER BY publish_date DESC  -- 按发布日期降序,最新的排在最前面
LIMIT 5;                    -- 只取前5条记录

不同数据库的适配写法

有些数据库不支持 LIMIT,得用对应的语法:

  • SQL Server / Access:用 TOP 关键字
    SELECT TOP 5 *
    FROM news
    ORDER BY publish_date DESC;
    
  • Oracle:需要借助子查询先排序,再用 ROWNUM 过滤
    SELECT *
    FROM (
        SELECT * 
        FROM news
        ORDER BY publish_date DESC
    ) latest_news
    WHERE ROWNUM <= 5;
    
    (注:Oracle 的 ROWNUM 是在排序前生成的,所以必须先通过子查询完成排序,再在外层过滤行数)

优化小技巧

如果存在多条新闻发布日期完全相同的情况,建议再加一个辅助排序字段(比如自增的 id),保证排序结果的稳定性——毕竟新发布的新闻通常id更大:

SELECT * 
FROM news
ORDER BY publish_date DESC, id DESC  -- 日期相同则按id降序,确保最新的排在前面
LIMIT 5;

内容的提问来源于stack exchange,提问作者Oscar Hill

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:58:57