Kiedy mam do czynienia z problemem zwracania zawsze dokładnie jednego wiersza, często korzystam z agregacji. Poniższe zwróci NULL
jeśli nie ma dopasowania:
select max(employee_id)
from employee
where name = 'John_Doe';
Następujące zwraca 0:
select coalesce(max(employee_id), 0)
from employee
where name = 'John_Doe';