oracle SQL 错误: ORA-02014: 不能从具有 DISTINCT, GROUP BY 等的视图选择 FOR UPDATE
2016-05-31 14:48
4059 查看
错误的思路sql语句:
select rownum,a.id,a.deptno FROM (select emp.* from emp where state=1 order by deptno asc) a
where rownum <=10 for update;错误原因:
SQL 错误: ORA-02014: 不能从具有 DISTINCT, GROUP BY 等的视图选择 FOR UPDATE
02014. 00000 - "cannot select FOR UPDATE from view with DISTINCT, GROUP BY, etc."
oracle:对查询满足条件的数据上锁,正确的sql如下:
select id,deptno FROM emp
where id in
(select id from
(select id from emp
where state=1 order by deptno asc)
where rownum <=10
)
order by deptno
for update;内部排序后,取到相应的数据,但是用了in后,数据乱序,需重新order。
总结:DISTINCT, GROUP BY,order by等不要直接在from后的子查询中,否者无法使用for update。
select rownum,a.id,a.deptno FROM (select emp.* from emp where state=1 order by deptno asc) a
where rownum <=10 for update;错误原因:
SQL 错误: ORA-02014: 不能从具有 DISTINCT, GROUP BY 等的视图选择 FOR UPDATE
02014. 00000 - "cannot select FOR UPDATE from view with DISTINCT, GROUP BY, etc."
oracle:对查询满足条件的数据上锁,正确的sql如下:
select id,deptno FROM emp
where id in
(select id from
(select id from emp
where state=1 order by deptno asc)
where rownum <=10
)
order by deptno
for update;内部排序后,取到相应的数据,但是用了in后,数据乱序,需重新order。
总结:DISTINCT, GROUP BY,order by等不要直接在from后的子查询中,否者无法使用for update。
相关文章推荐
- oracle常用分析函数
- Oracle 使用Job详解
- Oracle v$nls_parameters 和 nls_database_parameters 区别
- Oracle修改sequence的初始值
- oracle11g出现错误,监听服务启动后停止。某些服务未由其他服务或程序使用时将自动停止
- Oracle限权管理
- [生产库实战] 如何合理的使用logmnr进行日志挖掘,并对生产库影响最小化
- Oracle,SQLserver 分页语句
- Oracle checkpoint详解
- Oracle误删Undo后恢复
- [生产库实战] 如何使用触发器对生产库上亿级大表进行实时同步
- 重建Undo表空间
- ORACLE-RAC的CRS维护命令总结
- Oracle Git Hub Any Command
- oracle中日期转换
- oracle树查询
- Oracle drop 或者误删表数据恢复的两种实用方法
- 53个Oracle语句优化规则详解(转)
- OGG-01973 Oracle GoldenGate Capture for Oracle, ext_xps.prm: The redo record indicates data loss o
- 配置pl/sql 连接远程oracle服务器