La documentación es tu amiga; ¡deberías leerlo!
Dice:
IFNULL(expr1,expr2)
Si expr1no es así NULL, IFNULL()vuelve expr1; de lo contrario, vuelve
expr2.
Y luego muchos ejemplos. Esto es equivalente a usar un condicional ternario con una comparación NULLay el sujeto de comparación como segundo operando; que no use los símbolos ?y :que llegue allí no es realmente relevante para nada.
Entonces, en tu caso:
SELECT IFNULL(`id`, 0) FROM `table`
Si está desesperado por proporcionar tres operandos explícitamente (¿por qué?), Cambie a IF:
SELECT IF(`id` IS NULL, 0, `id`) FROM `table`