比如表TableA有三个字段:C1 C2 C3现在按C3排序查询:select * from TableA order by C3 desc
只取其中一条则:select * from (select * from TableA order by C3 desc) where rownum=1;
能返回按C3字段排序后的第一行。但是如果不使用子查询的方式,是否可能实现同样的效果?
只取其中一条则:select * from (select * from TableA order by C3 desc) where rownum=1;
能返回按C3字段排序后的第一行。但是如果不使用子查询的方式,是否可能实现同样的效果?
解决方案 »
- 全表数据更新不影响访问的问题,求教。
- 急!!!帮忙看一下,顶着有分
- 多张表:合并;创建视图
- 请问在ORACLE储存过程中设置参数的默认值
- 在windows xp下如何彻低卸载oracle客户端呀?oci.dll文件为何不能删除,更新呀?
- DBMS_OUTPUT.ENABLE作什么用?
- 数据库连接访问远程数据库怎样才能选中特定的字段??oracle里日期怎么用SQL语句进行筛选啊
- 如何从oracle的本地网络服务名(在客户端配置)得到其对应的机器名和数据库名??
- 如何远程访问他人的数据库?
- 这两句的统计结果为什么不一样,?
- 怎么用SQL实现日期区间遍历每天数据?
- (菜乌请教)如何查看已生成的表的脚本?
select a.* from TableA a not exists (select 1 from TableA b where a.C3<b.C3)
select a.* from TableA a where not exists (select 1 from TableA b where a.C3<b.C3)
--估计不行
SELECT B.SID1,B.NAME,
ROW_NUMBER() OVER(ORDER BY B.SID1 desc)
FROM yyq B
WHERE rownum = 1
姑且把这种也算子查询,那么,楼主的意思是想一条语句搞定
非常遗憾的说一下,无法满足要求,因为使用rank函数,也需要外层过滤的select * from
(
select c1,c2,c3
,row_number() over(order by QUERY_TAB_FIELD) rank_order
from TABLE_A t
)
where rank_order = 1
max(c1) keep(dense_rank last order by c3) as c1,
max(c2) keep(dense_rank last order by c3) as c2,
max(c3) keep(dense_rank last order by c3) as c3
from TABLEA
比如 c1 c2 c3
1 3 1
3 4 2
则查询的结果是 3 4 2
select * from table where c3=MAX(C3)
--不用子查询 是不可能的 select * from TableA where c3=(select max(c3) from tablea)--或者分析函数