Sql Oracle,使用prepared语句在一个查询中更新多行
我知道您可以使用Sql Oracle,使用prepared语句在一个查询中更新多行,sql,oracle,sql-update,prepared-statement,Sql,Oracle,Sql Update,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; 是否也有基于值的更新方法?所以会是这样的 UPDAT
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”中执行多重更新?您可以使用:
我不完全理解你的问题,但也许你只是需要我不明白。您正在尝试将多行更新为相同的值,还是不同的值?是否可以在更新前后添加示例表数据?使用此链接仍不清楚,部分原因是您尚未显示绑定值或表之后的外观。您建议的
updateall
有三组绑定变量,那么它们是什么呢?它似乎假设给定的bookid
正好有三行,这意味着您希望使用不同的值更新其中的每一行,但它如何知道要为哪一行使用哪些值呢?如果您将它们都设置为相同的值,那么简单的更新有什么问题?
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;