sql >> Database >  >> RDS >> Mysql

MYSQL INNER JOIN om 3 soorten resultaten te krijgen

Als u LEFT OUTER JOINs gebruikt, kunt u drie zoekopdrachten uitvoeren als:-

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()

Hier doet het een left outer join voor eventuele latere vervaldatums van verzekeringen, en controleert of i2.id NULL is om ervoor te zorgen dat er geen latere vervaldatum wordt gevonden, en controleert vervolgens de gevonden vervaldatum om te controleren of deze is verlopen.

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

Dit controleert alleen of er geen overeenkomend verzekeringsrecord is

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()

Zeer vergelijkbaar met de eerste query, het doet een left outer join voor eventuele latere vervaldatums van de verzekering, en controleert of i2.id NULL is om ervoor te zorgen dat er geen latere vervaldatum wordt gevonden, en controleert vervolgens de gevonden vervaldatum om te controleren of deze niet is verlopen .



  1. Hoe een gebruiker te koppelen aan meerdere schema's van een database?

  2. MySQL:Total GROUP BY MET ROLLUP nieuwsgierigheid

  3. Samenvoegen van het resultaat van twee queries mysql

  4. Hoe een SSIS-pakket uit te voeren wanneer een bestand in de map is aangekomen?