Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak mogę zrobić instrukcję UPDATE z JOIN w SQL Server?

Składnia ściśle zależy od tego, jakiego SQL DBMS używasz. Oto kilka sposobów na zrobienie tego w ANSI/ISO (powinno działać na każdym SQL DBMS), MySQL, SQL Server i Oracle. Pamiętaj, że moja sugerowana przeze mnie metoda ANSI/ISO będzie zwykle znacznie wolniejsza niż pozostałe dwie metody, ale jeśli używasz SQL DBMS innego niż MySQL, SQL Server lub Oracle, może to być jedyna droga (np. jeśli twój DBMS SQL nie obsługuje 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

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

Zauważ, że tabela docelowa nie może się powtarzać w FROM klauzula dla Postgresa.

Wyrocznia:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Przyrost tożsamości skacze w bazie danych SQL Server

  2. Jak włączyć uprawnienia zbiorcze w SQL Server

  3. SqlServer:Logowanie nie powiodło się dla użytkownika

  4. Jak włączyć usługę MSDTC w programie SQL Server?

  5. Dlaczego serwer sql przechowuje znaki zapytania zamiast znaków japońskich w polach NVarchar?