Mos*_*ndi 4 t-sql sql-server exists sql-server-2008
假设有一个这样的表:
f1 f2
----------
1 3
4 8
6 4
NULL 1
Run Code Online (Sandbox Code Playgroud)
以下查询按预期工作:
SELECT f2
FROM Table_1 a
WHERE NOT EXISTS (SELECT *
FROM Table_1
WHERE a.f2 = f1)
Run Code Online (Sandbox Code Playgroud)
...和结果集是:
f2
---
3
8
Run Code Online (Sandbox Code Playgroud)
...但类似的查询IN没有返回任何内容:
SELECT f2
FROM Table_1 a
WHERE f2 NOT IN (SELECT b.f1
FROM Table_1 b)
Run Code Online (Sandbox Code Playgroud)
有什么问题 ?
Mik*_*son 10
这是因为nullf1 中的值.试试这个.
SELECT f2
FROM Table_1 a
WHERE f2 NOT IN (select b.f1
from Table_1 b
where b.f1 is not null)
Run Code Online (Sandbox Code Playgroud)
这是一个很好的解释,为什么会这样.NOT IN子句和NULL值
| 归档时间: |
|
| 查看次数: |
2463 次 |
| 最近记录: |