sql >> Databasteknik >  >> RDS >> Oracle

Uppdatera rader i en tabell med data från en annan tabell baserat på att en kolumn i varje är lika

update 
  table1 t1
set
  (
    t1.column1, 
    t1.column2
      ) = (
    select
      t2.column1, 
      t2.column2
    from
      table2  t2
    where
      t2.column1 = t1.column1
     )
    where exists (
      select 
        null
      from 
        table2 t2
      where 
        t2.column1 = t1.column1
      );

Eller detta (om t2.column1 <=> t1.column1 är många till en och någon av dem är bra):

update 
  table1 t1
set
  (
    t1.column1, 
    t1.column2
      ) = (
    select
      t2.column1, 
      t2.column2
    from
      table2  t2
    where
      t2.column1 = t1.column1
    and
      rownum = 1    
     )
    where exists (
      select 
        null
      from 
        table2 t2
      where 
        t2.column1 = t1.column1
      ); 


  1. Hur exporterar man all data från tabell till ett insättningsbart sql-format?

  2. Välj sista raden i MySQL

  3. Är INSERT RETURNING garanterat att returnera saker i rätt ordning?

  4. Identifiera och hantera uppdragskritiska åtkomstapplikationer under ett utvecklingsprojekt