一个新闻表中有10个分类新闻,想查询每个分类下的最后5个ID的新闻标题,SQL语句可以写出来吗?

一张表中的查询,有新闻ID,标题TITLE,分类CATEGORY。比如分类有“今日热点”,“国际焦点”等等等,就想查询出每个分类下最新的5个ID的标题显示出来,有这个语句... 一张表中的查询,有新闻ID,标题TITLE,分类CATEGORY。比如分类有“今日热点”,“国际焦点”等等等,就想查询出每个分类下最新的5个ID的标题显示出来,有这个语句吗?或者给个思路改变拆表改变表结构之类的实现也行。 展开
 我来答
badkano
推荐于2016-05-01 · 知道合伙人体育行家
badkano
知道合伙人体育行家
采纳数:144777 获赞数:885358
团长

向TA提问 私信TA
展开全部

什么数据库?

最后的五个是什么意思?

是按发表时间排,离目前时间最远的5个?

 

给你写了个sqlserver的例子,我选的是前三名,你照着改一下吧

建立测试表

create table news
(newsid int,
title varchar(40),
category varchar(40),
f_date datetime)

测试数据

insert into news values (1,'历史性新闻','国际焦点','2013-1-1')
insert into news values (2,'历史性','国际焦点','2013-1-2')
insert into news values (3,'大新闻','国际焦点','2013-1-3')
insert into news values (4,'新闻','国际焦点','2013-1-4')
insert into news values (5,'今天','今日热点','2013-2-1')
insert into news values (6,'明天','今日热点','2013-2-2')
insert into news values (7,'昨天','今日热点','2013-2-4')
insert into news values (8,'后天','今日热点','2013-2-3')

运行

select * from news a
where (select count(1) from news b where b.category=a.category and b.f_date>=a.f_date)<=3

结果

朝闻通
2024-10-12 广告
朝闻通是国内知名的媒体发布服务公司,专注企业国内外媒体发布、新闻发布会、活动策划推广、媒体邀约、海外推广营销21年。业务咨询:新闻发布会:新闻发布会合作案例点击查看详情微博KOL:微博KOL合作价格点击查看详情公众号KOL:公众号KOL合作... 点击进入详情页
本回答由朝闻通提供
水色浮云
2013-06-13 · TA获得超过604个赞
知道小有建树答主
回答量:222
采纳率:100%
帮助的人:270万
展开全部
WITH CTE 
AS(
SELECT ID
      ,TITLE
      ,CATEGORY
      ,ROW_NUMBER() OVER(PARTITION BY CATEGOTY ORDER BY ID DESC) AS OD
FROM TABLE_NAME
)
SELECT * FROM CTE
WHERE OD <= 5

可以改变语句最后的 * 筛选你想要的列,我这个是把每个分类下,最新的5个(ID最大的5个)新闻显示出来。

如果有疑问,可追问。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式