A documentação é sua amiga; você deveria ler!
Diz:
IFNULL(expr1,expr2)
Se expr1não for NULL, IFNULL()retorna expr1; caso contrário, ele retorna
expr2.
E então muitos exemplos. Isso é equivalente a usar uma condicional ternária com uma comparação NULLe o sujeito de comparação como o segundo operando; que não acontece de usar os símbolos ?e :chegar lá não é realmente relevante para nada.
Então, no seu caso:
SELECT IFNULL(`id`, 0) FROM `table`
Se você está desesperado para fornecer três operandos explicitamente (por quê ?!), mude para IF:
SELECT IF(`id` IS NULL, 0, `id`) FROM `table`