mySQL';其中名称不在';不工作?

mySQL';其中名称不在';不工作?,mysql,sql,Mysql,Sql,我有以下声明: SELECT id, name FROM players WHERE this = 1 AND name NOT IN (SELECT name FROM players_online WHERE this = 'that') ORDER BY RAND() LIMIT 3, 6 所有列的名称都正确。没有SQL错误发生,它只是不返回任何结果 从我在文档中读到的内容来看,它应该可以工作,但不

我有以下声明:

SELECT id, name 
FROM players
WHERE this = 1 
  AND name NOT IN (SELECT name 
                   FROM players_online 
                   WHERE this = 'that')
ORDER BY RAND() 
LIMIT 3, 6
所有列的名称都正确。没有SQL错误发生,它只是不返回任何结果

从我在文档中读到的内容来看,它应该可以工作,但不能


有什么想法吗?

不要在子查询中使用
NOT IN
。如果子查询中的任何值为
NULL
,则它具有错误的语义。在这种情况下,
NOT In
永远不会计算为TRUE,因此根本不会返回任何行

相反,请使用
不存在

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;

这是用于哪个RDBMS的?请添加一个标记,以指定您使用的是
mysql
postgresql
sql server
oracle
db2
-还是其他完全相同的东西。您可能在
players\u online中有一个
null
值。name