sql >> Databáze >  >> RDS >> Sqlserver

Jak mohu provést příkaz UPDATE s JOIN na SQL Server?

Syntaxe přísně závisí na tom, který SQL DBMS používáte. Zde je několik způsobů, jak to udělat v ANSI/ISO (aka by mělo fungovat na jakémkoli SQL DBMS), MySQL, SQL Server a Oracle. Mějte na paměti, že mnou navrhovaná metoda ANSI/ISO bude obvykle mnohem pomalejší než ostatní dvě metody, ale pokud používáte SQL DBMS jiný než MySQL, SQL Server nebo Oracle, může to být jediný způsob, jak jít (např. pokud váš SQL DBMS nepodporuje 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;

Pamatujte, že cílová tabulka se nesmí v FROM opakovat klauzule pro 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. 10 tipů pro Microsoft Access pro vytváření vybraných dotazů

  2. Zřetězit/sloučit hodnoty pole během seskupování/agregace

  3. Vzdálený přístup k serveru MySQL přes tunel SSH

  4. PL/SQL - Příklad zvýšení chyby aplikace