sql >> Databasteknik >  >> RDS >> Mysql

MYSQL INNER JOIN för att få 3 typer av resultat

Genom att använda LEFT OUTER JOINs kan du 3 frågor göras som:-

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

Här gör den en vänster yttre koppling för eventuella senare försäkringsförfallodatum, och kontrollerar att i2.id är NULL för att säkerställa att inget senare utgångsdatum hittas, och kontrollerar sedan det hittade utgångsdatumet för att kontrollera att det har gått ut.

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

Detta kontrollerar bara att det inte finns något matchande försäkringsregister

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

Mycket lik den första frågan, den gör en vänster yttre koppling för eventuella senare försäkringsförfallodatum, och kontrollerar att i2.id är NULL för att säkerställa att inget senare utgångsdatum hittas, och kontrollerar sedan det hittade utgångsdatumet för att kontrollera att det inte har gått ut .



  1. importera massdata till MySQL

  2. Hur kontrollerar jag om radioknappen är markerad eller vald i jQuery?

  3. Använder vilolägesverktyg för att omvända konstruera pojos från Postgres

  4. Hur kan jag sakta ner en MySQL-dump för att inte påverka nuvarande belastning på servern?