Mysql
 sql >> Base de données >  >> RDS >> Mysql

sql comment combiner trois requêtes de deux tables en une seule requête

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.