Mysql
 sql >> Baza danych >  >> RDS >> Mysql

sql jak połączyć trzy zapytania z dwóch tabel w jedno zapytanie

Te wymagania są na tyle mylące, że warto dokonać ponownej oceny modelu danych. Myślę, że UNION rozwiązanie jest najlepszym rozwiązaniem, które może zostać zmodyfikowane w celu użycia UNION ALL dla wydajności.

Zrobiłem hack oparty na muteksie, który prawdopodobnie ma tyle samo subtelnych problemów, co inne zapytania na tej stronie.

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)

To powiedziawszy, dokładnie przetestuj te zapytania i przejrzyj swoje dane i wyniki. W zależności od danych wejściowych jest dużo miejsca na błędy.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy potrafisz rozwiązać to proste zapytanie SQL?

  2. Co oznaczają podwójne słupki (||) w SQL?

  3. Jak wyodrębnić dwie kolejne cyfry z pola tekstowego w MySQL?

  4. Skrypt sprawdzania kondycji replikacji MySQL

  5. Alchemia SQL:ValueError czy zbyt wiele wartości do rozpakowania?