sql >> Database >  >> RDS >> Sqlserver

Zoek gewijzigde rijen (samengestelde sleutel met nulls)

ANSI SQL heeft de IS [NOT] DISTINCT FROM constructie die nog niet is geïmplementeerd in SQL Server (Verbindingsverzoek ).

Het is mogelijk om simuleer deze functionaliteit in SQL Server met EXCEPT /INTERSECT echter. Beide behandelen NULL als gelijk in vergelijkingen. U wilt rijen vinden waar de sleutelkolommen hetzelfde zijn, maar de waardekolommen verschillen. Dus dit zou het moeten doen.

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. Oracle JDeveloper-fragmenten gebruiken met MySQL

  2. Welk slot, indien aanwezig, gebruikt 'CREATE TRIGGER' in PostgreSQL 9.4.2

  3. ORDER BY-items moeten in de selectielijst verschijnen als SELECT DISTINCT is opgegeven

  4. Ongeldig dumpformaat pgbackups:herstel zelfs met Dropbox-downloadlink