Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Bagaimana saya bisa melakukan pernyataan UPDATE dengan JOIN di SQL Server?

Sintaks sangat bergantung pada SQL DBMS yang Anda gunakan. Berikut adalah beberapa cara untuk melakukannya di ANSI/ISO (alias harus bekerja pada SQL DBMS apa pun), MySQL, SQL Server, dan Oracle. Harap diperhatikan bahwa metode ANSI/ISO yang saya sarankan biasanya akan jauh lebih lambat daripada dua metode lainnya, tetapi jika Anda menggunakan SQL DBMS selain MySQL, SQL Server, atau Oracle, maka itu mungkin satu-satunya cara (mis. jika DBMS SQL Anda tidak mendukung 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;

Perhatikan bahwa tabel target tidak boleh diulang dalam FROM klausa untuk 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara saya terhubung ke SQL Server melalui sqlalchemy menggunakan Otentikasi Windows?

  2. Cara Mengetahui Cara Menangani Korupsi Basis Data di SQL Server

  3. TODATETIMEOFFSET() Contoh di SQL Server

  4. Tidak dapat terhubung ke localDB di VS2012 – Terjadi kesalahan terkait jaringan atau spesifik saat membuat koneksi ke SQL Server...

  5. Bandingkan dua baris dan identifikasi kolom yang nilainya berbeda