只是想知道如何使用合并语句将下面的查询转换为 oracle 查询?

Posted

技术标签:

【中文标题】只是想知道如何使用合并语句将下面的查询转换为 oracle 查询?【英文标题】:Just wondering how can i convert this below query to a oracle query using merge statement? 【发布时间】:2020-10-19 10:38:49 【问题描述】:
UPDATE WRK_VTNHMBENTEMP BEN
INNER JOIN wrk_vtnhmbenaccmap ACC ON BEN.WFID = ACC.WFID
LEFT OUTER JOIN vtsmbankbranch BNK ON BNK.BANKNAME = ACC.benbankname
BEN.CURRSTATUSDESC := NVL(BEN.CURRSTATUSDESC,'')||'|'||'Bank Name is not Valid: '||ACC.benbankname;Ben.CURRSTATUSCODE:='30'
where BEN.WFID=IN_WFID AND BNK.BANKBRANCHID IS NULL

;

【问题讨论】:

此查询只会产生语法错误。请说明您想要完成的任务。 请看:Why should I provide an MCRE for what seems to me to be a very simple SQL query? 我还是新手。我只是代表我的兄弟这样做。我刚刚纠正了该查询中的一个小错误。你能帮我转换一下吗 您使用的是 mysql 还是 Oracle? (该 UPDATE 不会同时在两者上运行。) 对不起,我的错。他尝试使用 sqlines 网站将实际的 MySQL 查询转换为 oracle。我将使用实际查询更新问题。谢谢 【参考方案1】:

到目前为止,您发布的内容可能是这样的(假设最后一行的IN_WFID 代表某种参数):

MERGE INTO wrk_vtnhmbentemp ben
     USING (SELECT acc.wfid, acc.benbankname
              FROM wrk_vtnhmbenaccmap acc
                   LEFT JOIN vtsmbankbranch bnk
                      ON bnk.bankname = acc.benbankname
             WHERE bnk.bankbranchid IS NULL) x
        ON (ben.wfid = x.wfid)
WHEN MATCHED
THEN
   UPDATE SET
      ben.currstatusdesc =
            NVL (ben.currstatusdesc, ' ')
         || '|'
         || 'Bank name is not valid: '
         || x.benbankname,
      ben.currstatuscode = '30'
           WHERE ben.wfid = in_wfid;

【讨论】:

这正是我想要的。这真的很有帮助。非常感谢。

以上是关于只是想知道如何使用合并语句将下面的查询转换为 oracle 查询?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 OR 而不是 AND 链接范围查询?

将 SQL 查询转换为红移

将 Guava 谓词转换为 Java 8 谓词

如何将下面的文本转换为序列文件,该文件又将转换为 mahout kmeans 的矢量?

有没有办法使用合并语句将此查询转换为 Oracle 查询?

如何使用 HIVE 在 WHERE 语句中对 OR 子句进行分组