我正在尝试检查数据库是否存在特定组合.
表: conversations
+----+
| id |
+----+
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
+----+
Run Code Online (Sandbox Code Playgroud)
表: conversations_users
+----+--------------+------+
| id | conversation | user |
+----+--------------+------+
| 1 | 1 | 1 |
| 2 | 1 | 2 |
| 3 | 2 | 1 |
| 4 | 2 | 2 |
| 5 | 2 | 3 |
| 6 | 2 | 4 |
| 7 | 3 | 2 |
| 8 | 3 | 3 |
| 9 | 4 | 2 |
| 10 | 4 | 4 |
+----+--------------+------+
Run Code Online (Sandbox Code Playgroud)
然后我想进行查询以获得这些用户在同一对话中的对话:
Users: 1,2,3,4 (Only them, no else)
Run Code Online (Sandbox Code Playgroud)
如果有一个只有那些会话的对话,我想得到那个对话的id,否则result应该成为0
任何人都有任何想法如何做到这一点?
这是“集合内集合”查询的示例。对于这些,我喜欢使用group bywithhaving子句:
select conversation
from conversation_users cu
group by conversation
having SUM(user = 1) > 0 and
sum(user = 2) > 0 and
sum(user = 3) > 0 and
sum(user = 4) > 0 and
sum(user not in (1, 2, 3, 4)) = 0
Run Code Online (Sandbox Code Playgroud)
having 子句的每个条件对应于问题中指定的五个条件之一:
| 归档时间: |
|
| 查看次数: |
605 次 |
| 最近记录: |