Disse krav er forvirrende nok, det kan være værd at revurdere din datamodel. Jeg tror, at UNION
løsning er dit bedste bud, muligvis modificeret til at bruge UNION ALL
for effektivitet.
Jeg sammensatte et mutex-baseret hack, der sandsynligvis har lige så mange subtile problemer som nogen af de andre forespørgsler på denne side.
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)
Når det er sagt, prøv venligst disse forespørgsler omhyggeligt og se over dine data og resultater. Der er meget plads til fejl afhængigt af dine inputdata.