这个查询怎么做,帮帮忙

[复制链接]
查看11 | 回复5 | 2006-4-13 07:34:50 | 显示全部楼层 |阅读模式
有一个图片表
pic id (主键)
title
news_id
逻辑是这样,因为一个新闻有多张图片所以一个news_id 可能对应多个pic_id
我的业务需求是
选择不重复的最新的四条新闻,且每条新闻中选择pic_id是最小的
我的sql是这样执行不了
select id fromtab news_id=(select dictinct news_id from tab order by news_id desc) where rownum select * from test;
PIC_IDNEWS_ID
---------- ----------
1
1
2
1
3
2
4
2
5
2
6
3
7
4
8
5
9
5
10
6
11
6
select pic_id,news_id
from (select row_number() over (partition by news_id order by pic_id) rn,

pic_id,news_id
from test
wherenews_id in(select * from (select distinct news_id from test order by news_id desc nulls last)

whererownum<=4)
)
wherern=1
PIC_IDNEWS_ID
---------- ----------
6
3
7
4
8
5
10
6
回复

使用道具 举报

千问 | 2006-4-13 07:34:50 | 显示全部楼层
selectnews_id from (select news_id,max(pic_id) from tab group by new_id,pic_id) order by news_id desc
这样写行不?
回复

使用道具 举报

千问 | 2006-4-13 07:34:50 | 显示全部楼层
最新的新闻就是news_id 最大的
回复

使用道具 举报

千问 | 2006-4-13 07:34:50 | 显示全部楼层
这个不行,查不出
回复

使用道具 举报

千问 | 2006-4-13 07:34:50 | 显示全部楼层
对,结果是我要的,没错,可能不能简单点了,因为这个表里有几万条数据,如果这样的话.....
谢谢
回复

使用道具 举报

千问 | 2006-4-13 07:34:50 | 显示全部楼层
原帖由 zxdzdh 于 2007-12-24 16:37 发表
对,结果是我要的,没错,可能不能简单点了,因为这个表里有几万条数据,如果这样的话.....
谢谢

你测试一下,几万条应该还快得,如果news_id有索引,或者有位图索引更快了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行