Diese Anforderungen sind verwirrend genug, sodass sich eine Neubewertung Ihres Datenmodells lohnen könnte. Ich denke, die UNION
Lösung ist Ihre beste Wahl, möglicherweise modifiziert, um UNION ALL
zu verwenden für Effizienz.
Ich habe einen Mutex-basierten Hack zusammengestellt, der wahrscheinlich so viele subtile Probleme hat wie alle anderen Abfragen auf dieser Seite.
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)
Bitte testen Sie diese Abfragen jedoch sorgfältig und sehen Sie sich Ihre Daten und Ergebnisse an. Abhängig von Ihren Eingabedaten gibt es eine Menge Raum für Fehler.