我有一个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
);
但是,这是在两个不同的表之间,我将在同一个表上进行。
答案 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