MySQL converte silenziosamente le stringhe in numeri in un contesto numerico.
Lo fa convertendo i caratteri numerici iniziali (come cifre, segno meno e punto decimale).
Se non ci sono cifre, si ferma. Quindi:
where id = 'a'
viene interpretato come:
where id = 0
Morale:non utilizzare mai virgolette singole attorno a costanti numeriche o costanti che dovrebbero essere numeri.