Mysql 使用NOT IN时的查询问题,子选择返回空值

Mysql 使用NOT IN时的查询问题,子选择返回空值,mysql,Mysql,我正试图找出我在这里做错了什么。基本上,下面的查询查询表“Profiles”t1,然后再次使用非函数查询同一个表“Profiles”,从t2获取profile\u friends,并显示在t2结果中未找到的ID的结果 查询 SELECT t1.profile_id, t1.profile_username, t1.profile_name, t1.profile_friends FROM PROFILES t1 WHERE t1.profile_id NOT IN (SELECT t2.pr

我正试图找出我在这里做错了什么。基本上,下面的查询查询表“Profilest1,然后再次使用非函数查询同一个表“Profiles”,从t2获取profile\u friends,并显示在t2结果中未找到的ID的结果

查询

SELECT t1.profile_id,  t1.profile_username, t1.profile_name, t1.profile_friends 
FROM PROFILES t1
WHERE t1.profile_id NOT IN (SELECT t2.profile_friends FROM PROFILES AS t2 WHERE t2.profile_id = '1')
来自上述查询和数据库结构的结果

此ID的2,6,10不应显示在此结果中。井ID2未显示,但为什么ID610显示

但是当我尝试这个代码时,它是有效的(注意,我已经硬编码了值)


您必须考虑
NULL
s。有什么常见的比较吗(=,>,如果您更改
选择
子查询以将
NULL
排除在
而不是
过滤器中,这会改变您的结果吗?我有一抽屉袜子。如果我关灯并从中随机选择一些袜子,为什么我似乎只得到红色和绿色的袜子?谢谢,但似乎有一点小错误sunderstanding.请查看我的更新“来自上述查询和数据库结构的结果”
SELECT t1.profile_id,  t1.profile_username, t1.profile_name, t1.profile_friends 
FROM PROFILES t1
WHERE t1.profile_id NOT IN (2,6,10)
SELECT *
  FROM profiles
 WHERE profile_id <> 1
   AND (profile_friends <> '1' OR profile_friends IS NULL) -- parentheses are important here
| PROFILE_ID | PROFILE_USERNAME | PROFILE_FRIENDS | |------------|------------------|-----------------| | 3 | username3 | (null) | | 4 | username4 | (null) | | 5 | username5 | (null) | | 7 | username7 | (null) | | 8 | username8 | (null) | | 9 | username9 | (null) |