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

mySQL 'where name NOT IN' não está funcionando?


Não use NOT IN com subconsultas. Tem a semântica errada se algum valor na subconsulta for NULL . Nesse caso, o NOT IN nunca é avaliada como TRUE, portanto, nenhuma linha é retornada.

Em vez disso, use 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;