我有一个表caxnode,它有字段node_alias,node_mode,node_id等。
在某些情况下,node_alias被标记为“常规”以及不同node_id的“逻辑”。我想将相同node_alias标记为“常规”的条目以及“逻辑”更改为逻辑。即如果相同的条目在表中标记为“逻辑”并且是LDOM分区,则将“regular”更改为“logical”。
这是我的工作查询,用于返回我有兴趣更改的结果..
select Node_ID, Node_type, Num_of_proc, Node_Alias, Host_ID, Node_mode, Partition_Type
from CAXNODE nd
where (Node_mode = 'VIRTUAL' or Node_mode = 'REGULAR')
and Node_Alias in
(select nd2.Node_Alias
from CAXNODE nd2
where nd2.Node_mode = 'LOGICAL' and Partition_Type = 'LDOM'
) ;
现在我想更改值以将Node_mode设置为'LOGICAL'; Partition_Type为'LDOM',Host_ID为(nd2.Host_ID); Num_of_proc到(nd2.Num_of_proc);
如何在一个更新声明中执行此操作?
答案 0 :(得分:0)
易。删除SELECT,并用UPDATE [target]替换,然后添加SET更改列表。
--select Node_ID, Node_type, Num_of_proc, Node_Alias, Host_ID, Node_mode, Partition_Type
UPDATE nd
SET
Node_mode = 'LOGICAL',
Partition_Type = 'LDOM',
Host_ID = nd2.Host_ID,
Num_of_proc = nd2 Num_of_proc
from CAXNODE nd
where (Node_mode = 'VIRTUAL' or Node_mode = 'REGULAR')
and Node_Alias in
(select nd2.Node_Alias
from CAXNODE nd2
where nd2.Node_mode = 'LOGICAL' and Partition_Type = 'LDOM'
) ;