我很难找到合适的标题。
我正在开发一个包含两个表的消息传递系统,一个包含所有不同的对话(对话中的用户和对话的 uid),另一个包含用户之间的消息。
对于每个对话,我使用对话的 uid 和 user_id 为对话中的每个用户创建一行。在对话中可以只有 2 个用户,但也可以有更多(3、4、5、6 等)
我的 SQL 语句有问题,我不知道如何解决。问题是,当我们说 3 个用户之间有对话时,之后可以说其中 2 个用户想要在没有第 3 个用户的情况下开始私下交谈。当 2 个用户已经与其他用户进行对话时,如何使 SQL 语句不返回任何内容。这样我就可以在我的表中添加 2 行具有自己的私有会话 ID 的新行。
conversation_list
表格如下所示:
|id | user_id| conversation_id|
-----------------------------
| 1 | 1| 1|
| 2 | 3| 1|
| 3 | 1| 2|
| 4 | 2| 2|
| 5 | 4| 2|
现在我的 SQL 代码是这样的:
SELECT *
FROM conversation_list
WHERE user_id IN (user1_id,user_id2)
GROUP BY conversation_id
HAVING COUNT(*) = 2