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

Znajdź zmienione wiersze (klucz złożony z wartościami null)

ANSI SQL ma IS [NOT] DISTINCT FROM konstrukcja, która nie została jeszcze zaimplementowana w SQL Server (Żądanie połączenia ).

Możliwe jest symuluj tę funkcjonalność w SQL Server przy użyciu EXCEPT /INTERSECT jednakże. Oba traktują NULL równe w porównaniach. Chcesz znaleźć wiersze, w których kluczowe kolumny są takie same, ale kolumny wartości są inne. Więc to powinno wystarczyć.

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. Popraw wydajność zapytań SQL Server na dużych tabelach

  2. Jak wstawić listę C# do bazy danych za pomocą Dapper.NET?

  3. Jaki jest najlepszy sposób na tworzenie stronicowania w SQL Server?

  4. Zmienić Sql-Server (express) z nazwanego wystąpienia na localhost?

  5. Jak zwrócić ciąg w odwrotnej kolejności za pomocą SQL Server – REVERSE()