Die Dokumentation ist dein Freund; du solltest es lesen!
Es sagt:
IFNULL(expr1,expr2)
Wenn expr1nicht NULL, wird IFNULL()zurückgegeben expr1. Andernfalls wird es zurückgegeben
expr2.
Und dann viele Beispiele. Dies entspricht der Verwendung einer ternären Bedingung mit einem Vergleich mit NULLund dem Vergleichssubjekt als zweitem Operanden. Dass es nicht passiert, die Symbole zu verwenden ?und :Sie dorthin zu bringen, ist für nichts wirklich relevant.
Also in Ihrem Fall:
SELECT IFNULL(`id`, 0) FROM `table`
Wenn Sie unbedingt drei Operanden explizit angeben möchten (warum?!), Wechseln Sie zu IF:
SELECT IF(`id` IS NULL, 0, `id`) FROM `table`