Questi requisiti sono abbastanza confusi che potrebbe valere la pena rivalutare il tuo modello di dati. Penso che il UNION
soluzione è la soluzione migliore possibilmente modificata per utilizzare UNION ALL
per efficienza.
Ho messo insieme un hack basato su mutex che probabilmente ha tanti problemi sottili come qualsiasi altra query in questa pagina.
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)
Detto questo, testa attentamente queste query e controlla i tuoi dati e risultati. C'è molto spazio per errori a seconda dei dati di input.