sql - 如何在列必须匹配所有值的情况下执行 SELECT?
问题描述
考虑一个有 3 列的表:
CREATE TABLE myTable (
ItemName nvarchar(100),
ItemRank int,
ItemLoc nvarchar(100))
表的示例输出(要在下面插入的查询)
SELECT * FROM myTable
- 项目 1, 1, LocA
- 项目 1、2、LocB
- 项目 1、3、LocC
- 项目 2, 1, LocA
- 项目 2, 2, LocC
- 项目 3, 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)。
我需要选择项目未分配所有ItemName
s的所有s(即 LocA、LocB、LocC)。myTable
ItemLoc
使用 aboce 数据的所需输出是
- 项目2
- 第 3 项
因为Item2
没有LocB
设置,Item3
也没有LocA
或LocC
设置。
我怎样才能做到这一点?我尝试使用NOT EXISTS
查询并列出条件,但无济于事。
解决方案
使用聚合
select ItemName
from myTable
where ItemLoc in ('LocA','LocB','LocC')
group by ItemName
having count(distinct itemloc)<3
推荐阅读
- netlify - How to hide folder path with `Netlify`?
- wordpress - How can I change how my WordPress theme displays categories? I want to display subcategories under parent category
- python - Unable to send e-mail using python
- google-cloud-dataflow - CombinePerKey not merging accumulators across multiple workers
- docker - Pod 卡在“CrashLoopBackOff”上,即使它应该进入 /bin/bash
- python - 在 Alpine Linux 中使用与 apk 一起安装的 Python 包
- html - Bootstrap 无法右对齐我的 DIV - 右拉不起作用
- php - Wordpress 插件开发中的错误,包括我的脚本;无法登录
- sql - 此错误“通信链路故障”的原因可能是什么?
- bash - 用于提取开发人员 ID 安装的 CL 选项(策略?)