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

Temukan baris yang diubah (kunci komposit dengan nol)

ANSI SQL memiliki IS [NOT] DISTINCT FROM konstruksi yang belum diimplementasikan di SQL Server (Permintaan koneksi ).

Dimungkinkan untuk simulasikan fungsi ini di SQL Server menggunakan EXCEPT /INTERSECT namun. Keduanya memperlakukan NULL sebagai setara dalam perbandingan. Anda ingin menemukan baris di mana kolom kuncinya sama tetapi kolom nilainya berbeda. Jadi ini harus dilakukan.

SELECT *
FROM   SourceTable S
       JOIN DestinationTable D
         ON S.Key1 = D.Key1
            /*Join the key columns on equality*/
            AND NOT EXISTS (SELECT S.Key2,
                                   S.Key3
                            EXCEPT
                            SELECT D.Key2,
                                   D.Key3)  
             /*and the value columns on unequality*/
            AND NOT EXISTS (SELECT S.Value1,
                                   S.Value2
                            INTERSECT
                            SELECT D.Value1,
                                   D.Value2)  


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Format SQL Server Tanggal DD.MM.YYYY HH:MM:SS

  2. FREETEXTABLE selalu memiliki peringkat 0

  3. Batasan unik pada banyak kolom

  4. Permintaan ODBC pada MS SQL Server mengembalikan 255 karakter pertama hanya dalam PHP PDO (FreeTDS)

  5. cara terbaik untuk mengonversi dan memvalidasi string tanggal