一个新闻表中有10个分类新闻,想查询每个分类下的最后5个ID的新闻标题,SQL语句可以写出来吗?
一张表中的查询,有新闻ID,标题TITLE,分类CATEGORY。比如分类有“今日热点”,“国际焦点”等等等,就想查询出每个分类下最新的5个ID的标题显示出来,有这个语句...
一张表中的查询,有新闻ID,标题TITLE,分类CATEGORY。比如分类有“今日热点”,“国际焦点”等等等,就想查询出每个分类下最新的5个ID的标题显示出来,有这个语句吗?或者给个思路改变拆表改变表结构之类的实现也行。
展开
2个回答
展开全部
什么数据库?
最后的五个是什么意思?
是按发表时间排,离目前时间最远的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 广告
2024-10-12 广告
朝闻通是国内知名的媒体发布服务公司,专注企业国内外媒体发布、新闻发布会、活动策划推广、媒体邀约、海外推广营销21年。业务咨询:新闻发布会:新闻发布会合作案例点击查看详情微博KOL:微博KOL合作价格点击查看详情公众号KOL:公众号KOL合作...
点击进入详情页
本回答由朝闻通提供
展开全部
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个)新闻显示出来。
如果有疑问,可追问。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询