首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Where子句中使用IN查找精确的行匹配?

如何在Where子句中使用IN查找精确的行匹配?
EN

Stack Overflow用户
提问于 2018-12-19 13:58:57
回答 6查看 92关注 0票数 2

我有两张桌子tbl_group和tbl_members。下面是这两个表的快照。

代码语言:javascript
复制
+----+------------+
| id | groupTitle |
+----+------------+
|  1 | Group 1    |
|  2 | Group 2    |
+----+------------+

+----+---------+--------+
| id | groupId | userId |
+----+---------+--------+
|  1 |       1 |      1 |
|  2 |       1 |      2 |
|  3 |       1 |      3 |
|  4 |       2 |      1 |
|  5 |       2 |      2 |
+----+---------+--------+

现在我想用userId 3,2再创建一个组,但在此之前,我想检查是否有任何组具有相同的成员3和2,而不是其他成员。

我使用了IN子句,但它不起作用。

代码语言:javascript
复制
SELECT DISTINCT groupId 
FROM tbl_members 
WHERE userId IN (3,2)

它将返回两个组,尽管结果将为空。

EN

Stack Overflow用户

发布于 2018-12-20 16:09:35

第一个内部查询将决定所有获取的组只有两个成员,这将减少不必要的记录集,然后第二个内部查询获取该组id并检查该组中是否没有其他成员3,2,最后整个查询将给出只有3,2作为成员的组id。

代码语言:javascript
复制
SELECT groupId 
FROM tbl_members m
 WHERE m.userId IN (3,2) AND 
(SELECT COUNT(memberId) FROM tbl_members mmm WHERE mmm.groupId=m.groupId)=2 AND 
(SELECT COUNT(memberId) FROM tbl_members mm WHERE mm.groupId=m.groupId AND 
m.userId NOT IN (3,2))<=0 
GROUP BY groupId
票数 0
EN
查看全部 6 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53845376

复制
相关文章

相似问题

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