MySQL convierte silenciosamente cadenas en números en un contexto numérico.
Lo hace convirtiendo los caracteres numéricos principales (como dígitos, signo menos y punto decimal).
Si no hay dígitos, se detiene. Entonces:
where id = 'a'
se interpreta como:
where id = 0
Moraleja:nunca use comillas simples alrededor de constantes numéricas, o constantes que deberían ser números.