簡體   English   中英

oracle根據另一個表中的2個條件更新兩個

[英]oracle update two based on 2 condition from another table

我有2張桌子。 TableATableB

我想基於2個條件更新TableA ,1個條件來自TableA ,第二個條件來自TableB

UPDATE TableA SET
    TYPE = (CASE when TYPE = (SELECT DISTINCT(A.TYPE) FROM TableA A JOIN TableB B ON B.SOID = A.NAME where B.level = 9 and A.TYPE = 66) then 12
                      when TYPE = (SELECT DISTINCT(A.TYPE) FROM TableA A JOIN TableB B ON B.SOID = A.NAME where B.level = 4 and A.TYPE = 66) then 11
             else NULL 
END);

由於某種原因,它無法正確更新。 我只有3個滿足此條件的記錄,但它正在更新看起來像的每一行。

這可以在SQL中使用來完成。更新多個表(Oracle中不允許)時,SQL UPDATE語句的語法為:

UPDATE table1, table2, ... 
SET column1 = expression1,
    column2 = expression2,
    ...
WHERE table1.column = table2.column
AND conditions;

谷歌之后。

我找到了解決方案。 希望它能幫助別人。

    UPDATE (SELECT A.TYPE,B.LEVEL FROM TABLEA A 
            JOIN TABLEB B ON B.SOID = A.NAME where B.level IN (9,4) and A.TYPE = 66) 
    SET TYPE = (CASE (WHEN LEVEL = 9 THEN 12 
                  WHEN LEVEL = 4 THEN 11 
                  ELSE NULL 
                END);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM