sql >> Databáze >  >> RDS >> Sqlserver

Najít změněné řádky (složený klíč s nulami)

ANSI SQL má IS [NOT] DISTINCT FROM konstrukce, která ještě nebyla implementována v SQL Server (Požadavek na připojení ).

Je možné simulovat tuto funkci v SQL Server pomocí EXCEPT /INTERSECT nicméně. V obou případech platí NULL jako rovnocenné ve srovnání. Chcete najít řádky, kde jsou klíčové sloupce stejné, ale sloupce s hodnotami se liší. Takže by to mělo stačit.

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. Vztah SQL one-to-many - Jak VYBRAT řádky v závislosti na více vlastnostech k mnoha?

  2. Jak potvrdím změny, které jsem provedl v DataTable, do tabulky, ze které jsem ji převzal?

  3. Existuje automatický způsob, jak vygenerovat skript vrácení při vkládání dat pomocí LINQ2SQL?

  4. Oracle TNS:název síťové služby je zadán nesprávně