Ho due tabelle: table1
e table2
. Posso unirmi a loro usando id1
o id2
. Preferisco usare id1
, ma come in alcune righe id1
manca, quindi devo usare id2
. È la seguente sintassi corretta:Istruzioni AND/OR in SQL JOIN
SELECT *
FROM table1 as a
LEFT JOIN table2 as b
ON (a.id1 is not null and a.id1 = b.id1) or
(a.id2 is not null and a.id2 = b.id2)
Riporta alcuni risultati, ma voglio essere sicuro che se è valido come io non l'ho visto usato prima.
Ci sono modi migliori per farlo?
Ti suggerisco di aggiungere alcuni dati di esempio e un risultato previsto;). –
La tua sintassi è completamente corretta data la tua descrizione. – Wibbler
Il 'non è nullo' non è necessario. Il confronto 'a.id1 = b.id1' non produrrà alcuna" corrispondenza "per valori nulli in' a.id1' comunque (è equivalente a '(a.id1 = b.id1) o (a.id2 = b .id2) '. Suppongo che tu voglia qualcosa come' on (a.id1 è nullo e a.id2 = b.id2) o (a.id2 è nullo e a.id1 = b.id1) ' –