不要NOT IN
与子查询一起使用。如果子查询中的任何值为,则语义错误NULL
。在这种情况下,NOT IN
never的取值为TRUE,因此根本不返回任何行。
而是使用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;