sql >> Database >  >> RDS >> Sqlserver

SQL Server JOIN ontbrekende NULL-waarden

Je kunt expliciet zijn over de joins:

SELECT Table1.Col1, Table1.Col2, Table1.Col3, Table2.Col4
FROM Table1 INNER JOIN
     Table2
      ON (Table1.Col1 = Table2.Col1 or Table1.Col1 is NULL and Table2.Col1 is NULL) AND
         (Table1.Col2 = Table2.Col2 or Table1.Col2 is NULL and Table2.Col2 is NULL)

In de praktijk zou ik eerder coalesce() . gebruiken in de deelnamevoorwaarde:

SELECT Table1.Col1, Table1.Col2, Table1.Col3, Table2.Col4
FROM Table1 INNER JOIN
     Table2
     ON (coalesce(Table1.Col1, '') = coalesce(Table2.Col1, '')) AND
        (coalesce(Table1.Col2, '') = coalesce(Table2.Col2, ''))

Waar '' zou een waarde zijn die niet in een van de tabellen voorkomt.

Gewoon een woord van waarschuwing. In de meeste databases voorkomt het gebruik van een van deze constructies het gebruik van indexen.



  1. Selecteer op een eenvoudige manier de rechterkolom als primaire sleutel voor een bepaalde tabel

  2. Hoe getallen in de database op twee decimalen af ​​te ronden met behulp van een MySql-query

  3. MySql:BESTELLEN DOOR ouder en kind

  4. MySQL-rij 30153 is afgebroken door een GROUP_CONCAT()-fout