先上代码:
select * from FP_FSXX where ROWID IN (select rowid from (select * from FP_FSXX where fp_zl='P2' and fpzt='0' and NSRSBH='110101201703090' order by SFRQ,FP_QS_HM) where rownum=1) for update实际想解决一个对于结果集先排序,再取第一行并将其上锁的问题。
代码语句可以实现此需求,但是开销较大。
请问各位大神针对这种需求有没有更好的解决办法,或者对此sql语句有没有优化的空间?
数据库白痴跪谢。
select * from FP_FSXX where ROWID IN (select rowid from (select * from FP_FSXX where fp_zl='P2' and fpzt='0' and NSRSBH='110101201703090' order by SFRQ,FP_QS_HM) where rownum=1) for update实际想解决一个对于结果集先排序,再取第一行并将其上锁的问题。
代码语句可以实现此需求,但是开销较大。
请问各位大神针对这种需求有没有更好的解决办法,或者对此sql语句有没有优化的空间?
数据库白痴跪谢。
解决方案 »
- sql问题求助
- 为什么还会重复插到tmp_tab 里面
- oracle 为什么in子句使用函数得到的字符串就查不到数据
- 如何实现两个表定义不同的数据库定期自动交换数据
- 怎么样才能在后台看到ORACLE响应前台的每一步详情?比如执行什么操作?我想做一个窗口在前台监控后台数据库!怎么做?谢谢!来者有分!
- excel表数据导入问题,在线等,谢!
- 菜鸟问题
- 菜鸟写触发器和存储过程的问题,急,在线等!!!
- 又要救命了!!永久改变日期格式问题!
- 以前的问题都怎么没有涉及到导出“整个数据库的问题”!!!!
- 求助关于oracle数据库合并字段问题
- oracle 如何dinstinct两列数据 以及一个max函数的问题
FROM (SELECT *
FROM FP_FSXX
WHERE FP_ZL = 'P2'
AND FPZT = '0'
AND NSRSBH = '110101201703090'
ORDER BY SFRQ
,FP_QS_HM)
WHERE ROWNUM = 1
FOR UPDATE看下这样行不。
感觉你的rowid用了好多遍。。
select empno, ename, job
from emp
where empno = (select empno
from (select row_number() over(order by mgr) rn, empno, ename, job
from emp)
where rn = 1)
for update