sql >> Databasteknik >  >> RDS >> Mysql

MYSQL - Välj endast om raden i LEFT JOIN inte finns

Den vänstra kopplingen kommer att producera null rader för felmatchningarna.
Det är de null rader som du behöver filtrera på.

SELECT * FROM mail  
LEFT JOIN block ON (block.blocker = 'Bob') 
WHERE block.blocker IS NULL

Det är lite konstigt att gå med på ett fast värde, men en vanligare anslutning (med tanke på dina tabeller) skulle vara:

SELECT * FROM mail  
LEFT JOIN block ON (block.blocker = mail.receiver
                and block.blocked = mail.sender)<<-- these should match
WHERE block.blocker IS NULL                     <<-- select only mismatches
AND mail.receiver like 'bob';


  1. Kombinera resultat från två orelaterade frågor till en enda vy

  2. grundläggande datumjämförelse för utgångskontroll

  3. SQLite JSON_INSERT()

  4. Varför kan jag inte använda bindningsvariabler i DDL/SCL-satser i dynamisk SQL?