临时表上的 T-SQL "UPDATE FROM"子句的 pl-SQL 等效项



在SQL Server存储过程中,我有以下代码:

UPDATE #tbinforesult
SET prifix = ''
FROM #tbmax t
    INNER JOIN #tbinforesult i 
        ON i.prifix = t.prifix
            AND i.PropertyID = t.PropertyID
            AND i.GroupID = t.GroupID
            AND i.NID <> t.id

在pl-sql中,pl-sql集合而不是全局临时表的等价项是什么?

TSQL:

UPDATE
    Table_A
SET
    Table_A.col1 = Table_B.col1,
    Table_A.col2 = Table_B.col2
FROM
    Some_Table Table_A
INNER JOIN
    Other_Table Table_B
ON
    Table_A.id = Table_B.id
WHERE
    Table_A.col3 = 'cool'

PLSQL:

UPDATE table1 t1
   SET (name, desc) = (SELECT t2.name, t2.desc
                         FROM table2 t2
                        WHERE t1.id = t2.id)
 WHERE EXISTS (
    SELECT 1
      FROM table2 t2
     WHERE t1.id = t2.id )

或:

UPDATE (SELECT t1.id, 
               t1.name name1,
               t1.desc desc1,
               t2.name name2,
               t2.desc desc2
          FROM table1 t1,
               table2 t2
         WHERE t1.id = t2.id)
   SET name1 = name2,
       desc1 = desc2

SOURCE:在此处输入链接描述

最新更新