Mysql
 sql >> Datenbank >  >> RDS >> Mysql

sql wie man drei Abfragen aus zwei Tabellen zu einer Abfrage kombiniert

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.