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

sql hvordan man kombinerer tre forespørgsler fra to tabeller til én forespørgsel

Disse krav er forvirrende nok, det kan være værd at revurdere din datamodel. Jeg tror, ​​at UNION løsning er dit bedste bud, muligvis modificeret til at bruge UNION ALL for effektivitet.

Jeg sammensatte et mutex-baseret hack, der sandsynligvis har lige så mange subtile problemer som nogen af ​​de andre forespørgsler på denne side.

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)

Når det er sagt, prøv venligst disse forespørgsler omhyggeligt og se over dine data og resultater. Der er meget plads til fejl afhængigt af dine inputdata.



  1. Returner alle fremmednøgler, der refererer til en given tabel i SQL Server

  2. MySQL - Hvordan sletter man fra tabel, når indlejret udvalg bruger den tabel?

  3. Hvordan tilsidesætter man tilskrivningen af ​​en auto-inkrementering primær nøgle, når man indsætter en værdi i en MySQL-tabel?

  4. Er `definer` påkrævet, når du opretter en lagret procedure?