Mysql 使用NOT IN时的查询问题,子选择返回空值
我正试图找出我在这里做错了什么。基本上,下面的查询查询表“Profiles”t1,然后再次使用非函数查询同一个表“Profiles”,从t2获取profile\u friends,并显示在t2结果中未找到的ID的结果 查询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
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未显示,但为什么ID6和10显示
但是当我尝试这个代码时,它是有效的(注意,我已经硬编码了值)
您必须考虑
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) |