[英]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.