我需要转换我的update
SQL Server SQL查询
我有两张桌子:
Table1(id int, SaveId int, ChangeId int)
Table2(id int, smSaved int, boldId int)
查询是:
UPDATE
Table1
Set
SaveId=tbl.smSaved
FROM
Table1 tbl1
join Table2 tbl on tbl1.ChangeId=tbl.boldId
在MsSql中一切正常,但是当我试图在Oracle中运行它时,它不起作用。我无法弄清楚它是什么问题。
有人能解释我需要改变什么吗?
答案 0 :(得分:2)
试试这个:
UPDATE table1 SET SaveId =
(SELECT tbl.saved FROM table2 tbl
WHERE tbl.boldId = table1.ChangeId)
WHERE EXISTS(
SELECT tbl.saved FROM table2 tbl
WHERE tbl.boldId = table1.ChangeId
)
查询的第一部分更新SaveId,其值为tbl.saved(我想你只有一行table2与table1链接。
第二部分(存在)保证你有两个表之间的对应(如果你添加存在你把NULL放在table2中不存在的行)
答案 1 :(得分:1)
您可以使用与子查询相同的MS SQL进行更新。在Oracle中,它看起来像:
UPDATE (SELECT t1.savedId t1_saved
, t2.smsaved t2_saved
FROM table1 t1
, table2 t2
WHERE t1.changeid = t2.boldid)
SET t1_saved = t2_saved