Cú pháp hoàn toàn phụ thuộc vào SQL DBMS bạn đang sử dụng. Dưới đây là một số cách để thực hiện điều đó trong ANSI / ISO (hay còn gọi là sẽ hoạt động trên bất kỳ SQL DBMS nào), MySQL, SQL Server và Oracle. Xin lưu ý rằng phương pháp ANSI / ISO được đề xuất của tôi thường sẽ chậm hơn nhiều so với hai phương pháp còn lại, nhưng nếu bạn đang sử dụng SQL DBMS không phải MySQL, SQL Server hoặc Oracle, thì đó có thể là cách duy nhất để sử dụng (ví dụ:nếu SQL DBMS của bạn không hỗ trợ 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
Máy chủ SQL:
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;
Lưu ý rằng bảng đích không được lặp lại trong FROM
điều khoản cho Postgres.
Oracle:
Cập nhậtupdate
(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
);