如何排除与具有null
值的行对应的所有行?
-----------------------------------
| 0000139 | null | 10-01-2012 |
----------------------------------
| 0000139 | 95 | 10-02-2012 |
-----------------------------------
我不仅想排除带有 null 的行,还想排除所有其他行。
如何排除与具有null
值的行对应的所有行?
-----------------------------------
| 0000139 | null | 10-01-2012 |
----------------------------------
| 0000139 | 95 | 10-02-2012 |
-----------------------------------
我不仅想排除带有 null 的行,还想排除所有其他行。
;WITH x AS (SELECT key FROM dbo.table WHERE some_column IS NULL)
SELECT col1, col2, etc.
FROM dbo.table AS t
WHERE NOT EXISTS (SELECT 1 FROM x WHERE key = t.key);
下面的代码标识了至少一个测试分数为 NULL 的所有孩子,并将他们排除在查询结果之外。
CREATE TABLE #Test
( KidId INT NOT NULL
, Score INT NULL);
INSERT INTO #Test (KidId, Score)
SELECT KidId
, Score
FROM (VALUES
(1, 100), (1, 50), (1, 10)
, (2, NULL), (2, NULL), (2, NULL)
, (3, 100), (3, NULL), (3, 40)) sub (KidId, Score);
SELECT *
FROM #Test trgt
WHERE NOT EXISTS
(SELECT 1
FROM #Test src
WHERE trgt.KidId = src.KidId
AND src.Score IS NULL);