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

MYSQL INNER JOIN, aby uzyskać 3 rodzaje wyników

Używając LEFT OUTER JOIN, możesz wykonać 3 zapytania jako:-

SELECT vehicles.ID 
FROM vehicles 
INNER JOIN insurance i1 
ON vehicles.ID = i1.vehicle_ID 
LEFT OUTER JOIN insurance i2 
ON i1.vehicle_ID = i2.vehicle_ID 
AND i2.expire > i1.expire
WHERE i2.id IS NULL
AND i1.expire < NOW()

Tutaj wykonuje lewe złącze zewnętrzne dla wszelkich późniejszych dat wygaśnięcia ubezpieczenia i sprawdza, czy i2.id jest NULL, aby upewnić się, że nie znaleziono późniejszej daty wygaśnięcia, a następnie sprawdza znalezioną datę wygaśnięcia, aby sprawdzić, czy wygasła.

SELECT vehicles.ID 
FROM vehicles 
LEFT OUTER JOIN insurance i1 
ON vehicles.ID = i1.vehicle_ID 
WHERE i1.id IS NULL

To tylko sprawdza, czy nie ma pasującego rekordu ubezpieczenia

SELECT vehicles.ID 
FROM vehicles 
INNER JOIN insurance i1 
ON vehicles.ID = i1.vehicle_ID 
LEFT OUTER JOIN insurance i2 
ON i1.vehicle_ID = i2.vehicle_ID 
AND i2.expire > i1.expire
WHERE i2.id IS NULL
AND i1.expire >= NOW()

Bardzo podobne do pierwszego zapytania, wykonuje lewe zewnętrzne sprzężenie dla późniejszych dat wygaśnięcia ubezpieczenia i sprawdza, czy i2.id jest NULL, aby upewnić się, że nie znaleziono późniejszej daty wygaśnięcia, a następnie sprawdza znalezioną datę wygaśnięcia, aby sprawdzić, czy nie wygasła .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. pobierz rekord w kolejności z klauzulą ​​IN - mając zduplikowane wartości w klauzuli IN

  2. Instrukcja SELECT nie używająca possible_keys

  3. Używasz instrukcji IF w MySQL do aktualizacji lub wstawiania bez procedury przechowywanej?

  4. Zapytanie MySQL uruchamia się dwukrotnie

  5. Wyświetlać kolumnę rozmiaru jako wiersz dla każdego produktu kolorowego w powiązanej tabeli?