Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Намиране на променени редове (съставен ключ с нули)

ANSI SQL има IS [NOT] DISTINCT FROM конструкция, която все още не е внедрена в SQL Server (Заявка за свързване ).

Възможно е да симулира тази функционалност в SQL Server с помощта на EXCEPT /INTERSECT въпреки това. И двете третират NULL като равни в сравненията. Искате да намерите редове, където ключовите колони са еднакви, но колоните със стойности са различни. Така че това трябва да го направи.

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. Върнете нарастващата стойност на колона за идентичност в SQL Server

  2. Как да инсталирате Azure Data Studio на Mac

  3. Защо UPDATE отнема много повече време от SELECT?

  4. sql сървър - проверете дали е възможно предаване

  5. Как работи SET ROWCOUNT в SQL Server