sql – SSMS中NOT IN的替代方案

我在这个结构中有我的桌子.我试图找到所有唯一的ID,其单词不会出现在列表中.如何在MS SQL Server中实现此目的.

id word
1  hello
2  friends
2  world
3  cat
3  dog
2  country
1  phone
4  eyes

我有一个单词列表

**List**

phone 
eyes
hair
body

预期产出

除了列表中的单词,我需要所有唯一的ID.在这种情况下,它是,

2
3

 
我和我4不在输出中,因为它们的单词出现在List中

我尝试了下面的代码

Select count(distinct ID)
from Table1
where word not in ('phone','eyes','hair','body')

我试过Not Exists也没用

最佳答案
您也可以尝试这个:这是一个动态表结构:

DECLARE @T AS TABLE (id int, word varchar(20))
INSERT INTO @T VALUES
(1, 'hello'),
(2, 'friends'),
(2, 'world'),
(3, 'cat'),
(3, 'dog'),
(2, 'country'),
(1, 'phone'),
(4, 'eyes')

DECLARE @tblNotUsed AS TABLE ( id int, word varchar(20))
DECLARE @tblNotUsedIds AS TABLE (id int)

INSERT INTO @tblNotUsed VALUES
(1, 'phone'),
(2, 'eyes'),
(3, 'hair'),
(4, 'body')

INSERT INTO @tblNotUsedIds (id) 
SELECT [@T].id FROM @T INNER JOIN @tblNotUsed ON [@tblNotUsed].word = [@T].word

SELECT DISTINCT id FROM @T 
WHERE id NOT IN (SELECT id FROM @tblNotUsedIds)

转载注明原文:sql – SSMS中NOT IN的替代方案 - 代码日志