这是我在MS Access中的工作查询...
UPDATE Caxnode AS A INNER JOIN Caxnode AS B ON A.node_alias = B.node_alias
SET A.partition_Type = 'LDOM', A.node_mode = 'LOGICAL', A.host_id = b.host_id, A.num_of_proc = b.num_of_proc
WHERE (((A.node_mode)='virtual' Or (A.node_mode)='regular') AND ((B.partition_Type)='LDOM'));
这在Oracle中不起作用,我用谷歌搜索并认为该更新不适用于Oracle中的内部联接..
有人可以帮我翻译一下这个查询以便在Oracle上工作吗?
答案 0 :(得分:0)
更新中的JOIN是UPDATE的MS专有扩展。从谷歌搜索Oracle Update Syntax,我相信你可以把它写成:
UPDATE Caxnode AS A
SET (partition_Type, node_mode, host_id, num_of_proc)
= (select 'LDOM', 'LOGICAL', host_id, num_of_proc from Caxnode B where A.node_alias = B.node_alias and B.partition_Type='LDOM')
WHERE A.node_mode='virtual' Or A.node_mode='regular'
此语法确实确保如果B端有多行,则会出现错误,而在Access / SQL Server中,它会默默地随机选择其中一行。