查询出ysjr_news 表中的id,title,每一个channelid对应viewnum最大的一条数据

来源:百度知道 编辑:UC知道 时间:2024/05/05 20:08:23
查询出ysjr_news 表中的id,title,每一个channelid对应viewnum最大的一条数据
就是查询出ysjr_news表中,每个类型(channelid)中查看数(viewnum)最大的标题和id

数据如下:
id title channelid viewnum
1 aaa 1 5
2 bbb 3 15
3 ccc 3 5
4 ddd 2 46
5 eee 4 12
6 fff 2 15

查询出来的效果要如下:
id title channelid viewnum
1 aaa 1 5
2 bbb 3 15
4 ddd 2 46
5 eee 4 12

在线等···谢谢了
谢谢各位的支持了,不过大家的答案还是不对,正确答案如下:
select max(id),max(title) from (
select id, title, a.channelid, a.viewnum
from Ysjr_News a
left join (select channelid, max(viewnum) viewnum
from Ysjr_News
group by channelid) b on (a.channelid = b.channelid)
where a.viewnum >= b.viewnum
)a

select * from ysjr_news a, (select max(viewnum) viewnum from ysjr_news group by channelid) b
where a.viewnum = b.viewnum

那就这样吧

select * from ysjr_news a, (select channelid, max(viewnum) viewnum from ysjr_news group by channelid) b
where a.channelid = b.channelid and a.viewnum = b.viewnum

您的逻辑表达很清楚,不错。
不象有的人逻辑都表达不清,有时只好给出几个可能的答案,结果上火,他还看不懂!

您的下面那个解决思维也基本正确,只是不能只比较VIEWNUM一个变量,那当然要重复了,在多比较一个CHANNELID不就行了吗?
select b.* from ysjr_news as b,
(select channelid,max(viewnum) as viewnum from ysjr_news group by channelid ) as a
where a.channelid=b.channelid and a.viewnum=b.viewnum
哈哈,今后不要说什么题没解,只要逻辑是合理的,就有解。

你好!
请用:select * from ysjr_news a, (select max(id) id from ysjr_news group by channelid) b
where a.id = b.id

可以这样用 viewnum || channelid 做个组合就唯一了,oracle数据库测试通过
select id,title,channelid,viewnum from ysjr_news where viewnum || channelid in
(select max(viewnum) || channelid from ysj