sql >> Base de Datos >  >> RDS >> Mysql

mySQL 'donde el nombre NOT IN' no funciona?

No use NOT IN con subconsultas. Tiene la semántica incorrecta si algún valor en la subconsulta es NULL . En ese caso, el NOT IN nunca se evalúa como VERDADERO, por lo que no se devuelve ninguna fila.

En su lugar, utilice 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;