簡體   English   中英

如何將表更新為子查詢中的值

[英]How to update a table to the values in a sub-query

我需要對我的數據庫進行一些補救工作,以糾正一些數據錯誤。 我在目標表中有一個數字字段,需要更新為基礎查詢的結果。 大約有30,000行要更新。

嘗試了以下詳細描述的代碼的許多排列,但均未成功。 我意識到所提供的代碼不正確,但是我希望你們能夠從中推斷出我正在嘗試實現的目標。

UPDATE TARGETTABLE
SET NUMFIELD = IL1.NUMFIELD 
(
SELECT IL1.ID, IL1.NUMFIELD FROM 
  (
    SELECT H.ID, TRUNC(TO_CHAR(H.TIMEFIELD,'FF9')/1000000,'000')
    "NUMFIELD" FROM HISTORIC_ALARM_LOG@REMOTETABLE
    WHERE ID IN
    (
      SELECT ID FROM TARGETTABLE 
      WHERE (NUMFIELD = 0 OR NUMFIELD = 1)
      AND TIMEFIELD BETWEEN TO_DATE('23 Apr 2019 00:00:00','DD MON YYYY 
      HH24:MI:SS') AND TO_DATE('25 Apr 2019 00:00:00','DD MON YYYY
      HH24:MI:SS') 
      AND DATASOURCEID = 3
    )
  ) IL1
)

我認為這是您想要的邏輯:

UPDATE TARGETTABLE tt
    SET NUMFIELD = (SELECT "NUMFIELD"
                    FROM HISTORIC_ALARM_LOG@REMOTETABLE rt
                    WHERE rt.ID = tt.id
                   )
WHERE tt.NUMFIELD IN (0, 1) AND
      tt.TIMEFIELD >= DATE '2019-04-23' AND
      tt.TIMEFIELD >= DATE '2019-04-25' AND
      tt.DATASOURCEID = 3;

筆記:

  • 對要更新的行的過濾應該在最外面的WHERE (與UPDATE關聯)。
  • 您需要一個關聯子句。
  • 使用DATE常量-它們更安全,更簡單地編寫。

暫無
暫無

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

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