Update multiple rows using select statement

前端 未结 5 1727
鱼传尺愫
鱼传尺愫 2021-01-04 00:38

I have these tables and values:

Table1
------------------------
ID | Value
------------------------
2 | asdf
4 | fdsa
5 | aaaa


Table2
---------------------         


        
相关标签:
5条回答
  • 2021-01-04 00:59

    If you have ids in both tables, the following works:

    update table2
        set value = (select value from table1 where table1.id = table2.id)
    

    Perhaps a better approach is a join:

    update table2
        set value = table1.value
        from table1
        where table1.id = table2.id
    

    Note that this syntax works in SQL Server but may be different in other databases.

    0 讨论(0)
  • 2021-01-04 01:01

    None of above answers worked for me in MySQL, the following query worked though:

    UPDATE
        Table1 t1
        JOIN
        Table2 t2 ON t1.ID=t2.ID 
    SET
        t1.value =t2.value
    WHERE
        ...
    
    0 讨论(0)
  • 2021-01-04 01:07

    Run a select to make sure it is what you want

    SELECT t1.value AS NEWVALUEFROMTABLE1,t2.value AS OLDVALUETABLE2,*
    FROM Table2 t2
    INNER JOIN Table1 t1 on t1.ID = t2.ID
    

    Update

    UPDATE Table2
    SET Value = t1.Value
    FROM Table2 t2
    INNER JOIN Table1 t1 on t1.ID = t2.ID
    

    Also, consider using BEGIN TRAN so you can roll it back if needed, but make sure you COMMIT it when you are satisfied.

    0 讨论(0)
  • 2021-01-04 01:11

    I have used this one on MySQL, MS Access and SQL Server. The id fields are the fields on wich the tables coincide, not necesarily the primary index.

    UPDATE DestTable INNER JOIN SourceTable ON DestTable.idField = SourceTable.idField SET DestTable.Field1 = SourceTable.Field1, DestTable.Field2 = SourceTable.Field2...
    
    0 讨论(0)
  • 2021-01-04 01:17

    You can use alias to improve the query:

    UPDATE t1
       SET t1.Value = t2.Value
      FROM table1 AS t1
             INNER JOIN 
           table2 AS t2
             ON t1.ID = t2.ID
    
    0 讨论(0)
提交回复
热议问题