2

如何排除与具有null值的行对应的所有行?

-----------------------------------
| 0000139 | null | 10-01-2012 |
----------------------------------
| 0000139 | 95 | 10-02-2012 |
-----------------------------------

我不仅想排除带有 null 的行,还想排除所有其他行。

4

2 回答 2

4
;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);
于 2013-04-18T20:24:46.790 回答
0

下面的代码标识了至少一个测试分数为 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);
于 2013-04-18T20:41:34.593 回答