Te wymagania są na tyle mylące, że warto dokonać ponownej oceny modelu danych. Myślę, że UNION
rozwiązanie jest najlepszym rozwiązaniem, które może zostać zmodyfikowane w celu użycia UNION ALL
dla wydajności.
Zrobiłem hack oparty na muteksie, który prawdopodobnie ma tyle samo subtelnych problemów, co inne zapytania na tej stronie.
select
coalesce(t2.id, t1.name) AS ID,
coalesce(t2.company, t1.name) AS Company,
if(isnull(t2.id), 'NOT FOUND', 'FOUND') as Status
from (select 0 as mutex union select 1) as m
left join table1 as t1 on 1 = 1
left join table2 as t2 on t1.name = t2.name or (t1.id = t2.id and mutex)
group by coalesce(t2.id, t1.name)
To powiedziawszy, dokładnie przetestuj te zapytania i przejrzyj swoje dane i wyniki. W zależności od danych wejściowych jest dużo miejsca na błędy.