sql >> Database teknologi >  >> RDS >> Sqlserver

Hvordan kan jeg lave en UPDATE-sætning med JOIN i SQL Server?

Syntaks afhænger strengt af, hvilket SQL DBMS du bruger. Her er nogle måder at gøre det på i ANSI/ISO (aka burde virke på enhver SQL DBMS), MySQL, SQL Server og Oracle. Vær opmærksom på, at min foreslåede ANSI/ISO-metode typisk vil være meget langsommere end de to andre metoder, men hvis du bruger en anden SQL DBMS end MySQL, SQL Server eller Oracle, kan det være den eneste vej at gå (f.eks. hvis din SQL DBMS ikke understøtter MERGE ):

ANSI/ISO:

update ud 
     set assid = (
          select sale.assid 
          from sale 
          where sale.udid = ud.id
     )
 where exists (
      select * 
      from sale 
      where sale.udid = ud.id
 );

MySQL:

update ud u
inner join sale s on
    u.id = s.udid
set u.assid = s.assid

SQL Server:

update u
set u.assid = s.assid
from ud u
    inner join sale s on
        u.id = s.udid

PostgreSQL:

update ud
  set assid = s.assid
from sale s 
where ud.id = s.udid;

Bemærk, at måltabellen ikke må gentages i FROM klausul for Postgres.

Oracle:

update
    (select
        u.assid as new_assid,
        s.assid as old_assid
    from ud u
        inner join sale s on
            u.id = s.udid) up
set up.new_assid = up.old_assid

SQLite:

update ud 
     set assid = (
          select sale.assid 
          from sale 
          where sale.udid = ud.id
     )
 where RowID in (
      select RowID 
      from ud 
      where sale.udid = ud.id
 );


  1. Hvilke ressourcer findes der til justering af databasens ydeevne?

  2. Hvilken SQL-forespørgsel er hurtigere? Filtrer på Tilmeldingskriterier eller Hvor-klausul?

  3. DAY() Eksempler – MySQL

  4. SQL kommasepareret række med Group By-sætning