Mysql
 sql >> Database >  >> RDS >> Mysql

sql come combinare tre query da due tabelle in una query

Questi requisiti sono abbastanza confusi che potrebbe valere la pena rivalutare il tuo modello di dati. Penso che il UNION soluzione è la soluzione migliore possibilmente modificata per utilizzare UNION ALL per efficienza.

Ho messo insieme un hack basato su mutex che probabilmente ha tanti problemi sottili come qualsiasi altra query in questa pagina.

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)

Detto questo, testa attentamente queste query e controlla i tuoi dati e risultati. C'è molto spazio per errori a seconda dei dati di input.