Tyto požadavky jsou natolik matoucí, že by možná stálo za to přehodnotit váš datový model. Myslím, že UNION
řešením je vaše nejlepší sázka, možná upravená pro použití UNION ALL
pro efektivitu.
Sestavil jsem hack založený na mutexu, který má pravděpodobně tolik jemných problémů jako kterýkoli z ostatních dotazů na této stránce.
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)
To znamená, že tyto dotazy pečlivě otestujte a prohlédněte si svá data a výsledky. V závislosti na vašich vstupních datech je velký prostor pro chyby.