sql >> Database teknologi >  >> RDS >> Mysql

Ekskluder poster, hvis højre tabel matcher

Du kan bruge NOT EXISTS

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

Jeg glemmer dog altid, at MySql er den eneste(?) rdbms, som har problemer med at optimere en EXISTS /NOT EXISTS . Så det er lidt mere effektivt at bruge en LEFT JOIN tilgang.

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

I MS SQL-Server er det bedre at bruge koden NOT EXISTS .

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



  1. Sådan implementeres Teamcity med PostgreSQL for høj tilgængelighed

  2. Fuld tekstsøgning returnerer altid et tomt resultatsæt

  3. God praksis at opdele data over flere databaser?

  4. mysql_insert_id alternativ til postgresql