更新选择的结果

时间:2011-04-07 08:33:22

标签: sql select sql-update

我有一个表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);

如何在一个更新声明中执行此操作?

1 个答案:

答案 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'
    ) ;