select
call_list.id,
t.count
from call_list
join (select count(*) as count, devices.name from devices group by devices.name) as t on t.name = call_list.num;
Просто единственный смысл который я вижу это возвращение NULL вместо пустого запроса, но чем его пустой ответ в этом случай не устраивал непонятно.
Есть ощущение что есть какой-то более прикладной смысл.
так я NULL ни с чем её не сравниваю и не привожу)))
Но я понимаю что разработчик не дурак и не спроста обернул простой запрос в конструкцию IF (в вашем варианте IFNULL)
echo (null)?'yes':'no';
no
echo !(null)?'yes':'no';
yes
echo ('wtf')?'yes':'no';
yes
echo !('wtf')?'yes':'no';
no