Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

SQL:alternativa NOT IN para selecionar linhas com base em valores de linhas *diferentes*?


Assim:
SELECT a.name, a.team
FROM bowlers a
LEFT OUTER JOIN bowlers b ON a.name = b.name AND b.team = 'pin pals'
WHERE a.team = 'The homer team'
AND b.name IS NULL;

Você também pode fazer assim:
SELECT a.name, a.team
FROM bowlers a
WHERE a.team = 'The homer team'
AND NOT EXISTS (SELECT * FROM bowlers b
    WHERE b.team = 'pin pals'
    AND a.name = b.name
    );

A propósito, isso é chamado de "Left Anti-Semi Join".