标签: celko

SQL Server:为什么比较null = value为NOT IN返回true?

为什么进行比较value,以null返回false,使用时除外NOT IN,它返回true?


给定查询以查找具有帖子的所有stackoverflow用户:

SELECT * FROM Users
WHERE UserID IN (SELECT UserID FROM Posts)
Run Code Online (Sandbox Code Playgroud)

这按预期工作; 我得到一个有帖子的所有用户的列表.

现在查询逆; 找到所有没有帖子的stackoverflow用户:

SELECT * FROM Users
WHERE UserID NOT IN (SELECT UserID FROM Posts)
Run Code Online (Sandbox Code Playgroud)

这不返回任何记录,这是不正确的.

给出假设数据1

Users              Posts
================   ===============================
UserID  Username   PostID   UserID  Subject
------  --------   -------  ------  ----------------
1       atkins     1        1       Welcome to stack ov...
2       joels      2        2       Welcome all!
...     ...        ...      ...
399573  gt6989b    ...      ...
... …
Run Code Online (Sandbox Code Playgroud)

sql-server null celko

7
推荐指数
2
解决办法
1万
查看次数

标签 统计

celko ×1

null ×1

sql-server ×1