Deze vereisten zijn verwarrend genoeg, het kan de moeite waard zijn om uw datamodel opnieuw te beoordelen. Ik denk dat de UNION
oplossing is uw beste gok, eventueel aangepast om UNION ALL
te gebruiken voor efficiëntie.
Ik heb een op mutex gebaseerde hack samengesteld die waarschijnlijk net zoveel subtiele problemen heeft als alle andere vragen op deze 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)
Dat gezegd hebbende, test deze zoekopdrachten zorgvuldig en bekijk uw gegevens en resultaten. Er is veel ruimte voor fouten, afhankelijk van uw invoergegevens.