Ses*_*ame 1 sql t-sql sql-server sql-server-2008
我有以下数据:
ID --- ParentID --- DataValue
1 --- 1 --- A
2 --- 1 --- B
3 --- 1 --- C
4 --- 4 --- B
5 --- 4 --- C
6 --- 6 --- A
7 --- 6 --- B
8 --- 6 --- C
9 --- 6 --- D
Run Code Online (Sandbox Code Playgroud)
对于每组记录(按ParentID分组),我想找到所有没有包含"A"的记录作为DataValue的组
由于组1和组6至少包含一个"A"作为DataValue的记录,我不希望看到它们.我只想看到记录4和5(这是第4组的一部分),因为该组中没有记录具有"A".
任何帮助是极大的赞赏!
SELECT
ID,
ParentID,
DataValue
FROM
MyTable
WHERE
NOT EXISTS (
SELECT 1
FROM MyTable i
WHERE i.ParentId = MyTable.ParentId AND i.DataValue = 'A'
)
Run Code Online (Sandbox Code Playgroud)
(ParentId, DataValue)如果表很大,则建议使用索引.