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
);