sql >> Databasteknik >  >> RDS >> Mysql

Exkludera poster om den högra tabellen matchar

Du kan använda FINNS INTE

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

Men jag glömmer alltid att MySql är den enda(?) rdbms som har problem med att optimera en EXISTS /FINNS INTE . Så det är lite mer effektivt att använda en LEFT JOIN tillvägagångssätt.

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

I MS SQL-Server är det bättre att använda FINNS INTE .

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



  1. Hur åtgärdar jag felet 'Värde utanför intervallet justerat för kolumn'?

  2. hämtar filer från databasen genom deras sökväg i jsp

  3. Genererar slumptal i varje rad i Oracle-fråga

  4. En förklaring av MySqlBulkLoader