目的:
根据 rid 属性,得到 A表 最大的 rtime 属性值对应的记录。sql:
select * from A where rid='3636' order by rtime desc可以得到正确的结构,其中rtime=‘2008-11’但是当我改成如下sql:
select * from A where rownum<2 and rid='3636' order by rtime desc得到的结果竟然是rtime=‘2003-01’的记录这个到底是为什么呢??现在我将sql改成:
select a.* from (select * from A where rid='3636' order by rtime desc) a where rownum<2
可以得到正确的结构,但是速度很慢。。请高手帮忙解答下,只有这一种解决的方法么??
根据 rid 属性,得到 A表 最大的 rtime 属性值对应的记录。sql:
select * from A where rid='3636' order by rtime desc可以得到正确的结构,其中rtime=‘2008-11’但是当我改成如下sql:
select * from A where rownum<2 and rid='3636' order by rtime desc得到的结果竟然是rtime=‘2003-01’的记录这个到底是为什么呢??现在我将sql改成:
select a.* from (select * from A where rid='3636' order by rtime desc) a where rownum<2
可以得到正确的结构,但是速度很慢。。请高手帮忙解答下,只有这一种解决的方法么??
select * from A where rownum <2 and rid='3636' order by rtime desc对于第一条记录,应该是相同的吧
可是前两条sql得到的记录竟然不一样好奇怪啊
可以这么写
select * from( select * from A where rid='3636' order by rtime desc ) where rownum <2
这个不一定相同呀第一条语句,是查询rid='3636'然后按rtime排序.而第二条语句,是先查询出rid='3636'和rownum<2取一条记录,然后排序,这时排序语句已经失去意义了.因为rownum是一个变化的值,只是一个行号
原来是先where,然后再order by啊。那如果我想先where ,order by后,再取rownum,
除了
select a.* from (select * from A where rid='3636' order by rtime desc) a where rownum <2
还有别的办法么??因为我用了这个嵌套后,速度明显变慢了
SELECT *
FROM A A1
WHERE NOT EXISTS (SELECT 1
FROM A A2
WHERE A1.RID = A2.RID
AND A1.RID = '3636'
AND A1.RTIME < A2.RTIME)
AND A1.RID = '3636';
谢谢,mantisXF但是这个语句,比
select * from( select * from A where rid='3636' order by rtime desc ) where rownum <2
效率要低吧
我在rtime上建索引,是会影响查询效率的吧??