为什么使用union 或者union all的连接查询的语句中不能够使用 Order 排序?用一个比较复杂的select查询向一个表A插入记录,只有前面的10个字段的值被插进去,后面的8个字段的值没有被插进去(不是约束造成的问题,也没有任何报错)。如果用表A复制一个B表(create table b as select * from a ),则所有的字段的值都能够被插入B表。再用B表向A表插入记录,所有的字段的值也都能够被插入B表。
怎么查看具体的insert into a select ... from ...的过程呢?Oracle9i Enterprise Edition Release 9.2.0.1.0
PL/SQL Developer 7.1.4.1391 汉化版本
怎么查看具体的insert into a select ... from ...的过程呢?Oracle9i Enterprise Edition Release 9.2.0.1.0
PL/SQL Developer 7.1.4.1391 汉化版本
因为insert操作是个事物操作,所以可以有以下的方法:
1.通过logmnr分析重做日志
2.通过执行计划,理论分析。
我举例如下:
select fld1,fld2 from tab1
union
select fld3,fld4 from tab2
order by 1
也就是按第一列排序,或者order 2按第二列排序
接分...
怎么查看具体的insert into a select ... from ...的过程呢?
因为insert操作是个事物操作,所以可以有以下的方法:
1.通过logmnr分析重做日志
2.通过执行计划,理论分析。
怎么做?
因为两个表有可能有不同的索引,所以仅用一个order by 排序两个表是不行的在逻辑上这样分析:
先把两个表的查询结果合并起来,再对这个结果集排序select *
from (select * from .. union select * from ..) A
order by xxx
因为insert操作是个事物操作,所以可以有以下的方法:
1.通过logmnr分析重做日志
2.通过执行计划,理论分析。
怎么做?
怎么查看具体的insert into a select ... from ...的过程呢? 自己的代码有问题,已经改进。实际上用原来的代码向插入B数据也有同样的问题。
Order 放在最后进行排序