表的结构:SQL> desc t_reply;
名称 是否为空? 类型
----------------------------------------- -------- ---------------------------- ID NOT NULL NUMBER(18)
ARTICLE_ID NOT NULL NUMBER(18)
CONTENT NOT NULL NCLOB
USERID NOT NULL NUMBER(18)
CREATETIME DATESQL>需求:这是一个论坛的回复表,我想获取具有最新回复(按照时间排序)的十个article_id。
注:这里边的ARTICLE_ID可以重复,creatime可能重复。
另注:在线等,多谢大家!问题解决即给分。
名称 是否为空? 类型
----------------------------------------- -------- ---------------------------- ID NOT NULL NUMBER(18)
ARTICLE_ID NOT NULL NUMBER(18)
CONTENT NOT NULL NCLOB
USERID NOT NULL NUMBER(18)
CREATETIME DATESQL>需求:这是一个论坛的回复表,我想获取具有最新回复(按照时间排序)的十个article_id。
注:这里边的ARTICLE_ID可以重复,creatime可能重复。
另注:在线等,多谢大家!问题解决即给分。
解决方案 »
- 请问where语句的顺序是佛会影响效率
- oracle sql developer 打不开表
- 请教关于用EXECUTE IMMEDIATE 创建索引的问题。
- 关于oracle的时间(秒计算)加减问题
- 写SQL文时,怎么实现如果一个参数不存在,那么对应的检索条件就不执行?
- 关于临时表 和 临时表空间的使用问题!!!!!!!!在线等待!!!!!!!!!!
- 有办法检索一个varchar2型字段存的数据不能转换成yyyy-mm-dd hh23:mi:ss这样的date型吗?
- orcale同步问题
- 基本问题,谁能帮我解答
- Oracle数据库exp导出数据时出现以下错误,怎么解决?
- 函数索引用不上请教
- 关于远程数据库链接表数据(同义词)更新
from (select distinct rownum rn,article_id from t_reply order by CREATETIME desc)
where rn<=10;
from (select rownum,article_id,rownum()over (partition by article_id) rn
from t_reply
where rn =1--去掉重复的article_id
order by CREATETIME desc)
where rownum <= 10;
select ID, ARTICLE_ID, CONTENT, USERID, CREATETIME
from (select ID,
ARTICLE_ID,
CONTENT,
USERID,
CREATETIME,
row_number() over(partition by ARTICLE_ID order by CREATETIME) rn
from t_reply)
where rn = 1
and rownum <= 10
order by CREATETIME
select article_id
from (select rownum,article_id,row_number()over(partition by article_id order by article_id) rn
from t_reply
where rn =1--去掉重复的article_id
order by CREATETIME desc)
where rownum <= 10;
还有,select distinct rownum rn,article_id from t_reply order by CREATETIME desc这句也不正确。
SELECT ARTICLE, CREATETIME
FROM (SELECT ARTICLE_ID,
CREATETIME,
ROW_NUMBER() OVER(PARTITION BY ARTICLE ORDER BY CREATETIME DESC) RN
FROM T_REPLY)
WHERE RN < 11
select article_id
from (select distinct rownum rn,article_id,max(CREATETIME) rq from t_reply group by article_id order by rq desc)
where rn<=10;
select article_id from(
select rownum row_number,T.* from(
SELECT * FROM(
select row_number()over(partition by article_id order by article_id) rn,
t_reply.* from t_reply)where rn =1 order by CREATETIME desc)T)where row_number<=10经过修改,以上语句通过,^_^,结贴。