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