Cuando me enfrento al problema de devolver siempre exactamente una fila, a menudo uso la agregación. Lo siguiente devolverá NULL
si no hay coincidencia:
select max(employee_id)
from employee
where name = 'John_Doe';
Lo siguiente devuelve 0:
select coalesce(max(employee_id), 0)
from employee
where name = 'John_Doe';