Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

sql como combinar três consultas de duas tabelas em uma consulta


Esses requisitos são confusos o suficiente para que valha a pena reavaliar seu modelo de dados. Acho que a UNION solução é sua melhor aposta possivelmente modificada para usar UNION ALL para eficiência.

Eu montei um hack baseado em mutex que provavelmente tem tantos problemas sutis quanto qualquer uma das outras consultas nesta página.
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)

Dito isso, teste essas consultas com cuidado e analise seus dados e resultados. Há muito espaço para erros, dependendo dos dados de entrada.