sql >> Database teknologi >  >> RDS >> Sqlserver

SQL Server JOIN mangler NULL-værdier

Du kan være eksplicit om joinforbindelserne:

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)

I praksis ville jeg være mere tilbøjelig til at bruge coalesce() i forbindelsestilstanden:

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, ''))

Hvor '' ville være en værdi, der ikke findes i nogen af ​​tabellerne.

Bare en advarsel. I de fleste databaser forhindrer brug af nogen af ​​disse konstruktioner brugen af ​​indekser.



  1. Anbefales Hot Backup System til MySQL?

  2. 4 måder at adskille timer, minutter og sekunder fra en tidsværdi i MariaDB

  3. Hvordan kan jeg advare mit program, hvis en specifik databasetabel er blevet tilføjet/opdateret/slettet en post på den?

  4. MySQL indsættelsesfejl:ER_BAD_FIELD_ERROR:Ukendt kolonne '2525' i 'feltliste'