Affronterò la questione se tali disuguaglianze siano sempre VERO. La risposta è "no", non in SQL. Nella maggior parte dei casi, sono equivalenti. Il problema sorge con la conversione di tipo implicita.
In particolare, se a.id
è un numero e le altre colonne sono stringhe, quindi hai la situazione in cui:
1 = '1' -- true
1 = '1.00' -- true
'1' = '1.00' -- false
Puoi vedere questo
su questo db<>violino. Sarebbe banale configurarlo usando JOIN
s, ma dal momento che non scriverò codice che contiene virgole in FROM
clausola, lascio a te quell'esercizio.
In pratica, gli ID usati per i join dovrebbero essere dello stesso tipo. Non puoi nemmeno dichiarare una relazione di chiave esterna se non lo sono. A parte questa best practice, le due query non sono automaticamente equivalenti.
Nota:questo sarebbe altrettanto vero se utilizzassi uno standard corretto, esplicito JOIN
sintassi, che ti incoraggio fortemente, fortemente ad imparare e ad usare esclusivamente.