Cercando di eseguire il debug di alcuni join che sembravano restituire prodotti cartesiani, ho inserito la condizione ON equivalente in selects.È un'espressione condizionale SQL valida o un bug MySQL (funzionalità)?
In MySQL
select *
from table
where columnname
sembra comportarsi come se ho digitato where columname is not null
. In join digitando on table.columnname
viene accettato ma restituisce un sacco di righe. MySQL fa la cosa giusta se lo correggo a on table1.column=table2.column
ma sicuramente la mia prima versione era errata e illegale.
Presumibilmente getta il valore in 'columnname' in boolean e restituisce quelle righe dove viene valutato true. –
@MartinSmith: MySQL non ha un tipo di dati booleano reale. Tratta semplicemente ogni numero che non è zero come vero. Perciò 'delete from foo where 42' eliminerà volentieri tutte le righe della tabella senza lamentarsi della sintassi non valida. –
@a_horse_with_no_name - Che dire delle stringhe? Sono sempre trattati come 'false' tranne che per '' 1''? Sembra essere il caso di [questo SQL Fiddle] (http://sqlfiddle.com/#!2/c252c/2) –