Mysql
 sql >> Base de données >  >> RDS >> Mysql

mySQL 'where name NOT IN' ne fonctionne pas?

N'utilisez pas NOT IN avec des sous-requêtes. Il a la mauvaise sémantique si une valeur dans la sous-requête est NULL . Dans ce cas, le NOT IN n'est jamais évalué à TRUE, donc aucune ligne n'est renvoyée.

À la place, utilisez NOT EXISTS :

SELECT p.id, p.name
FROM players p
WHERE p.this = 1 AND 
      NOT EXISTS (SELECT 1
                  FROM players_online po
                  WHERE po.name = p.name AND po.this = 'that'
                 )
ORDER BY RAND()
LIMIT 3, 6;