sql >> Databasteknik >  >> RDS >> Mysql

sql hur man kombinerar tre frågor från två tabeller till en fråga

Dessa krav är tillräckligt förvirrande att det kan vara värt en omvärdering av din datamodell. Jag tror att UNION lösningen är din bästa insats eventuellt modifierad för att använda UNION ALL för effektivitet.

Jag satte ihop ett mutex-baserat hack som sannolikt har lika många subtila problem som någon av de andra frågorna på den här sidan.

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)

Som sagt, testa dessa frågor noggrant och titta över dina data och resultat. Det finns en hel del utrymme för fel beroende på dina indata.



  1. Hur man subtraherar privilegier i MySQL

  2. Använder du Mysqli bind_param med datum- och tidskolumner?

  3. CONVERT() vs TRY_CONVERT i SQL Server:Vad är skillnaden?

  4. Felsökning AlwaysOn – Ibland krävs många uppsättningar ögon