sql >> Database >  >> RDS >> Mysql

Records uitsluiten als de rechtertabel overeenkomt

U kunt NOT EXISTS . gebruiken

SELECT a.id, a.name
FROM A
WHERE NOT EXISTS
(
    SELECT 1 FROM B
    WHERE b.A = a.id AND b.cond = 'X'
)

Ik vergeet echter altijd dat MySql de enige (?) rdbms is die problemen heeft met het optimaliseren van een EXISTS /NOT EXISTS . Het is dus iets efficiënter om een ​​LEFT JOIN . te gebruiken benadering.

http://explainextended.com/2009/09/18/not-in-vs-not-exists-vs-left-join-is-null-mysql/

In MS SQL-Server is het beter om de NOT EXISTS . te gebruiken .

http://sqlperformance.com/2012/12 /t-sql-queries/left-anti-semi-join



  1. RMAN Lijst back-upcommando's

  2. Hoe privileges te beheren met rollen in MySQL

  3. Opnieuw proberen bij impasse voor MySQL / SQLAlchemy

  4. Registreer en voer PostgreSQL 9.0 uit als Windows-service