如何编写SQL语句以从同一个表中的另一列更新表中的列?

时间:2010-08-04 15:39:11

标签: sql database oracle

我有一个oracle DB,程序在更新表时写入两列。第2列基于第1列的值。随着时间的推移,人们手动编辑数据库,忘记将值插入第二列。我想编写一个简单的sql语句来更新所有列并将第二列同步到第一列。我知道有一些简单的声明可以做到这一点。做一些谷歌搜索我认为如下:

UPDATE suppliers 
SET supplier_name = ( 
    SELECT customers.name 
    FROM customers 
    WHERE customers.customer_id = suppliers.supplier_id
) 
WHERE EXISTS ( 
    SELECT customers.name 
    FROM customers 
    WHERE customers.customer_id = suppliers.supplier_id
);

但是,这是在两个不同的表之间,我将在同一个表上进行。

3 个答案:

答案 0 :(得分:3)

以下适用于SQL Server(尚未检查Oracle)。

UPDATE SUPPLIERS SET Supplier_Name = CustomerName

我试一试,看看它是否有效......

答案 1 :(得分:2)

如果两列都在同一个表中,您可以使用最简单的查询:

UPDATE your_table 
   SET column1 = column2
 WHERE column1 != column2;

这假设两列都不是NULL。如果列可以为空,请使用decode代替:

UPDATE your_table 
   SET column1 = column2
 WHERE decode(column1, column2, 1, 0) = 0;

答案 2 :(得分:2)

update tableName set col2 = col1