Lorsque je suis confronté au problème de toujours renvoyer exactement une ligne, j'utilise souvent l'agrégation. Ce qui suit renverra NULL
s'il n'y a pas de correspondance :
select max(employee_id)
from employee
where name = 'John_Doe';
La commande suivante renvoie 0 :
select coalesce(max(employee_id), 0)
from employee
where name = 'John_Doe';