sql - 选择在不同行上具有 NBR 1 和 2 行的 ID
问题描述
我正在寻找编写 SQL 来返回行,其中 aVENDOR_ID
有一行NBR_ID = 1
和另一行NBR_ID = 2
。在下面的示例中,SQL 将返回VENDOR_ID
93309A 的数据,其中一行为NBR_ID
1 ,另一行为NBR_ID
2。
GROUP_ID VENDOR_ID NBR_ID
AUX 27 1
AUX 87188A 1
AUX 92481A 1
AUX 92482A 1
AUX 92527A 1
AUX 93309A 1
AUX 93309A 2
AUX 93328A 1
我编写了以下 SQL,但这并没有专门返回VENDOR_ID
NBR_ID 为 1 的行和 NBR_ID 为 2 的另一行的 's。
SELECT GROUP_ID, VENDOR_ID, NBR_ID
FROM TEST_TABLE
WHERE NBR_ID IN (1,2)
如何更新为仅返回在不同行上VENDOR_ID
有这些NBR_ID
的?
解决方案
使用相关子查询
SELECT GROUP_ID,VENDOR_ID,NBR_ID
FROM TEST_TABLE a
WHERE exists(select 1 from TEST_TABLE b where a.GROUP_ID=b.group_id and
a.VENDOR_ID=b.vendor_id and NBR_ID IN (1,2)
having count(distinct nbr_id)=2) and NBR_ID IN (1,2)
推荐阅读
- node.js - 使用 HSET 将 JSON 数据循环到 Redis
- javascript - 附加的项目被立即删除
- amazon-web-services - 从 VPC 访问 S3 存储桶
- javascript - JavaScript 数组视图
- php - 如何不显示重复的文本?
- python - 地图数据框列
- css - CSS 网格问题
- wordpress - Visual Studio Code + WordPress + Docker:VS Code Not Sourcing Apache envvars 文件
- arrays - 使用对象中使用的数组计算总和
- c# - 在 ml.net 上制作预测引擎时在同一行上转换数据