如何在列必须匹配所有值的地方执行 SELECT?

How to perform SELECT where a column must match ALL values?

考虑具有 3 列的 table:

CREATE TABLE myTable (
ItemName nvarchar(100),
ItemRank int,
ItemLoc nvarchar(100))

table 的示例输出(要在下面插入的查询)

SELECT * FROM myTable
  1. Item1, 1, LocA
  2. Item1, 2, LocB
  3. Item1, 3, LocC
  4. Item2, 1, LocA
  5. Item2, 2, LocC
  6. Item3, 1, LocB
INSERT INTO [dbo].[myTable]
           ([ItemName]
           ,[ItemRank]
           ,[ItemLoc])
     VALUES
           ('Item1',1,'LocA'),
           ('Item1',2,'LocB'),
           ('Item1',3,'LocC'),
           ('Item2',1,'LocA'),
           ('Item2',2,'LocC'),
           ('Item3',1,'LocB')

现在,我知道只有 3 个可能的 ItemLoc 值(LocA、LocB、LocC)。

我需要 select 来自 myTable 的所有 ItemName,其中项目没有分配所有 ItemLoc(那些是 LocA、LocB、LocC)。

使用 aboce 数据的期望输出是

  1. Item2
  2. Item3

因为 Item2 没有设置 LocB,并且 Item3 没有设置 LocALocC

我该怎么做?我尝试使用 NOT EXISTS 查询并列出条件,但无济于事。

使用聚合

select ItemName
from myTable
where ItemLoc in ('LocA','LocB','LocC')
group by ItemName
having count(distinct itemloc)<3