簡體   English   中英

Oracle,使用准備好的語句在一個查詢中更新多行

[英]Oracle, Updating multiple rows in one query, using prepared statement

我知道您可以通過使用在查詢中插入多行

  INSERT ALL
  INTO mytable (column1, column2, column_n) VALUES (?,?,?)
  INTO mytable (column1, column2, column_n) VALUES (?,?,?)
  INTO mytable (column1, column2, column_n) VALUES (?,?,?)
  SELECT * FROM dual;

有沒有一種基於值的更新方法? 所以它會是這樣的

  UPDATE ALL
  SET mytable (column1, column2, column_n) VALUES (?,?,?)
  SET mytable (column1, column2, column_n) VALUES (?,?,?)
  SET mytable (column1, column2, column_n) VALUES (?,?,?)
  WHERE ID= ?
  SELECT * FROM dual;

例如我有一個評論表

       reviewid      bookid     authorname   authoremail
          1            1           peter        wdwdd
          2            1           jane         dwdwdw
          3            1           mary         dwdw

是否可以在 bookid = "1" 處進行多次更新?

您可以使用MERGE

MERGE INTO reviewtable r
USING ( SELECT 1 AS reviewid,
               1 AS bookid,
               'peter smith' AS name,
               'p.smith@email' AS email
        FROM   DUAL
        UNION ALL
        SELECT 2, 1, 'jane blogs', 'j.blogs@email' FROM DUAL
        UNION ALL
        SELECT 3, 1, 'mary adams', 'm.adams@email' FROM DUAL
      ) src
ON    ( r.bookid = src.bookid AND r.reviewid = src.reviewid )
WHEN MATCHED THEN UPDATE
  SET authorname  = src.name,
      authoremail = src.email;

暫無
暫無

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

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