站长网 MsSql教程 sql-update – 从另一个表更新多个列 – 需要Oracle格式

sql-update – 从另一个表更新多个列 – 需要Oracle格式

我有一个我在SQL Server中使用的脚本,但我需要将其转换为Oracle格式.有人可以帮忙吗? UPDATE PERSONS P SET P.JOBTITLE=TE.JOBTITLE,P.LAST_NAME=TE.LAST_NAME,P.FIRST_NAME=TE.FIRST_NAME,P.DBLOGIN_ID=TE.DBLOGIN_ID,P.EMAIL_ID=TE.EMAIL_ID,P.USERLEVE

我有一个我在SQL Server中使用的脚本,但我需要将其转换为Oracle格式.有人可以帮忙吗?

UPDATE PERSONS P SET 
        P.JOBTITLE=TE.JOBTITLE,P.LAST_NAME=TE.LAST_NAME,P.FIRST_NAME=TE.FIRST_NAME,P.DBLOGIN_ID=TE.DBLOGIN_ID,P.EMAIL_ID=TE.EMAIL_ID,P.USERLEVEL=TE.USERLEVEL,P.FACILITY_ID=TE.FACILITY_ID,P.SUPERVISOR=TE.SUPERVISOR,P.DEPARTMENT=TE.DEPARTMENT,P.WINLOGINID=TE.WINLOGINID
   FROM TEMP_ECOLAB_PERSONS TE
   WHERE P.PERSON=TE.PERSON;

– 从下面的文章中我得出以下声明.不幸的是,它仍然不起作用:

UPDATE (SELECT P.JOBTITLE,P.LAST_NAME,P.FIRST_NAME,P.DBLOGIN_ID,P.EMAIL_ID,P.USERLEVEL,P.FACILITY_ID,P.SUPERVISOR,P.DEPARTMENT,TE.JOBTITLE,TE.LAST_NAME,TE.FIRST_NAME,TE.DBLOGIN_ID,TE.EMAIL_ID,TE.USERLEVEL,TE.FACILITY_ID,TE.SUPERVISOR,TE.DEPARTMENT
     FROM PERSONS P,TEMP_ECOLAB_PERSONS TE WHERE P.PERSON=TE.PERSON)
  SET 
     P.JOBTITLE=TE.JOBTITLE,P.DEPARTMENT=TE.DEPARTMENT;

解决方法

我就是这样做的.它可能不是最好的表现,但它确实有效.

MERGE INTO PERSONS_TMP PT
USING ( 
    SELECT P.PERSON,P.JOB_TITLE,P.FACILITY_ID 
    FROM PERSONS P) TMP
ON (PT.PERSON = TMP.PERSON)
WHEN MATCHED THEN 
UPDATE SET 
    PT.FACILITY_ID = TMP.FACILITY_ID,PT.JOB_TITLE = TMP.JOB_TITLE,PT.FIRST_NAME = TMP.FIRST_NAME,PT.LAST_NAME = TMP.LAST_NAME;

上面的脚本将使用PERSONS表中的数据更新PERSONS_TMP表中的信息.我相信你的情况,你想要反过来.因此,请确保在运行脚本之前进行必要的更改.

如果需要插入新记录(如果不存在),可以在上面的SQL中添加“WHEN NOT MATCHED THEN ….”子句.

本文来自网络,不代表站长网立场,转载请注明出处:https://www.zwzz.com.cn/html/jc/mssql/2021/0524/5260.html

作者: dawei

【声明】:站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。
联系我们

联系我们

0577-28828765

在线咨询: QQ交谈

邮箱: xwei067@foxmail.com

工作时间:周一至周五,9:00-17:30,节假日休息

返回顶部