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;