2015-05-15 41 views
0

查看此查询;更新查询,将使用来自同一表另一记录的值设置记录中的特定列

update user_data set old_status= 'SNNNNS', 
        user_group='15', 
        default_rate='DEFAULT', 
        entity_num='1001' 
where user_name='Dasu'; 

我知道我可以写这样的查询并得到结果,但我不想写的价值。这些值来自同一个表中具有user_name'sys'的另一条记录。我想要一个查询,用'sys'中的值更新'Dasu'中的这些特定列。

有什么想法?

回答

1

在Oracle中,您可以使用merge进行自连接。另外,您也可以在update写相关子查询:

update user_data 
    set (old_status, user_group, default_rate, entity_num) = (select old_status, user_group, default_rate, entity_num from user_data where user_name = 'sys') 
where user_name='Dasu'; 
+0

希望你不介意,但我更新查询中使用一个单一的相关子查询,而不是每个@ninesided列 – ninesided

+0

之一。 。 。没关系。我经常会忘记哪些数据库支持这个,哪些不支持。 –

0

可以嵌套在您的更新语句选择。例如:

UPDATE Dasu 
SET old_status = (SELECT old_status FROM sys WHERE Id = 1) 
相关问题