Ces exigences sont suffisamment déroutantes pour justifier une réévaluation de votre modèle de données. Je pense que l'UNION
la solution est votre meilleur pari éventuellement modifié pour utiliser UNION ALL
pour l'efficacité.
J'ai mis en place un hack basé sur le mutex qui a probablement autant de problèmes subtils que n'importe laquelle des autres requêtes sur cette page.
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)
Cela dit, veuillez tester attentivement ces requêtes et examiner vos données et vos résultats. Il y a beaucoup de marge d'erreur en fonction de vos données d'entrée.