• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

项目oracle迁徙到mysql的小总结

mysql 搞代码 7年前 (2018-06-05) 132次浏览 已收录 0个评论

项目oracle迁移到mysql的小总结

1、更新表的不同
oracle
    <update id=”updateBroadcastIpIdAndResult” parameterClass=”map”>
        update IP_GN_BAXX_GBXX_LS
        <dynamic prepend=”set”>
            <isNotNull prepend=”,” property=”provinceSystemId”>
                SJXT_ID = #provinceSystemId#
                <isNotNull prepend=”,” property=”broadcastIpId”>
                    JLID = #broadcastIpId#
                </isNotNull>
            </isNotNull>
            <isNotNull prepend=”,” property=”operatingResult”>
                CZJG = #operatingResult#
            </isNotNull>
            <isNotNull prepend=”,” property=”resultInfo”>
                JGMS = #resultInfo#
            </isNotNull>
        </dynamic>
        where RBSJ = ( select max(RBSJ) from IP_GN_BAXX_GBXX_LS where
        JLID = #tempBroadcastIpId# ) and JLID = #tempBroadcastIpId#
    </update>
mysql
    <update id=”updateSourceIpIdAndResult” parameterClass=”map”>
        update IP_GN_LY_BAXX_LS 
        <dynamic prepend=”set”>
            <isNotNull prepend=”,” property=”provinceSystemId”>
                SJXT_ID = #provinceSystemId#
                <isNotNull prepend=”,” property=”sourceIpId”>
                    JLID = #sourceIpId#
                </isNotNull>
            </isNotNull>
            <isNotNull prepend=”,” property=”operatingResult”>
                CZJG = #operatingResult#
            </isNotNull>
            <isNotNull prepend=”,” property=”resultInfo”>
                JGMS = #resultInfo#
            </isNotNull>
        </dynamic>
        where id in(
            SELECT c.id FROM (
                SELECT id FROM IP_GN_LY_BAXX_LS WHERE
                    RBSJ = (SELECT
                                MAX(RBSJ)
                              FROM IP_GN_LY_BAXX_LS
                              where JLID = #tempSourceIpId#
                              )
                    AND JLID = #tempSourceIpId#
                  ) c 
        )   
    </update>
   1. 一般而言,不能更改表,并从子查询内的相同表进行选择。
   2. 例如,该限制适用于具有下述形式的语句:
   3. DELETE FROM t WHERE … (SELECT … FROM t …);
   4. UPDATE t … WHERE col = (SELECT … FROM t …);
   5. {INSERT|REPLACE} INTO t (SELECT … FROM t …);
   6. 例外:如果为FROM子句中更改的表使用子查询,前述禁令将不再适用。
   7. 例如:
   8. UPDATE t … WHERE col = (SELECT (SELECT … FROM t…)
   9. AS _t …);
  10. 禁令在此不适用,这是因为FROM中的子查询已被具体化为临时表,因此 “t”中的相关行已在满足“t”条件的情况下、在更新时被选中。
看了上面的说明顿悟,于是再加上了一个IN的子查询

DELETE 不同

oracle
    DELETE 表名 或DELETE FROM 表名


MYSQL   只能是DELETE FROM 表名

 


insert  delete 操作是不允许使用表别名的。

update  where条件中不允许自连接

子查询别名
mysql 子查询返回的临时表必须要起别名
oracle 没有限制

group by 多列时
oracle可以对多列用括号括起来
mysql则不行,否则会报Operand should contain 1 column(s) error

create table
oracle null,not null 放在default 值后面
mysql default 值 null,not null


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:项目oracle迁徙到mysql的小总结

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址