代码之家  ›  专栏  ›  技术社区  ›  chubbsondubs

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

  •  0
  • chubbsondubs  · 技术社区  · 14 年前

    我有一个Oracle数据库,其中一个程序在更新表时将写入两列。第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 回复  |  直到 8 年前
        1
  •  2
  •   Vincent Malgrat    14 年前

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

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

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

    UPDATE your_table 
       SET column1 = column2
     WHERE decode(column1, column2, 1, 0) = 0;
    
        2
  •  3
  •   Abe Miessler    14 年前

    以下功能在SQL Server中可用(尚未检查Oracle)。

    UPDATE SUPPLIERS SET Supplier_Name = CustomerName
    

    我会试试看它是否有效…

        3
  •  2
  •   Satpal    8 年前
    update tableName set col2 = col1