我有两张桌子tbl_group和tbl_members。下面是这两个表的快照。
+----+------------+
| 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子句,但它不起作用。
SELECT DISTINCT groupId
FROM tbl_members
WHERE userId IN (3,2)它将返回两个组,尽管结果将为空。
发布于 2018-12-20 16:09:35
第一个内部查询将决定所有获取的组只有两个成员,这将减少不必要的记录集,然后第二个内部查询获取该组id并检查该组中是否没有其他成员3,2,最后整个查询将给出只有3,2作为成员的组id。
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 groupIdhttps://stackoverflow.com/questions/53845376
复制相似问题