首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >严格匹配查找表上的多对一

严格匹配查找表上的多对一
EN

Stack Overflow用户
提问于 2022-02-05 02:23:33
回答 1查看 38关注 0票数 0

这让我和我的团队陷入了困境。我无法组成一个查询,它将严格匹配具有特定的查找排列的单个记录。

我们只有一张查表

room_member_lookup:

代码语言:javascript
复制
room  | member
---------------
A     | Michael
A     | Josh
A     | Kyle
B     | Kyle
B     | Monica
C     | Michael

我需要一个房间和一个确切的成员列表相匹配,但是我在堆栈溢出时尝试过的其他一切都将与房间A匹配,即使我只想要一个只有Josh和Kyle的房间。

我试过这样的查询

代码语言:javascript
复制
SELECT room FROM room_member_lookup
WHERE member IN (Josh, Michael)
GROUP BY room
HAVING COUNT(1) = 2

然而,这仍然将返回房间A,即使有3名成员,我需要一个确切的成员排列,这是匹配的房间,即使不是部分。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-05 03:05:52

代码语言:javascript
复制
SELECT room 
FROM room_member_lookup a
WHERE member IN ('Monica', 'Kyle')
  -- Make sure that the room 'a' has exactly two members
  and (select count(*) 
       from room_member_lookup b 
       where a.room=b.room)=2
GROUP BY room
-- and both members are in that room
HAVING COUNT(1) = 2

根据SQL方言,可以构建动态表(CTE或选择..。以保持成员集(例如Monica和Kyle ),然后使用减号/除sql运算符寻找集合等价性。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70994826

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档