我正在尝试从UserConversation表行中找到一个Conversation,其中UserConversation.userId在列表中,并且还发现UserConversation.userId匹配的行具有一定数量。
所以我有一个Conversation表。我有一个带有(userId,conversationId)字段的UserConversation表。我的问题是我如何得到UserConversation.conversationId,其中userId在列表中,匹配的list.size是相同的:
到目前为止,我有以下查询:
select uc.conversationid from userconversation uc where uc.userid in(3, 14, 23, 13978, 18488) group by uc.conversationid having count(*)=5
但是这个查询给了我其他UserConversation.conversationId,其中会话中可能有其他userIds。我只是想用计数来限定它。
以下是一个示例:
My Conversation表格如下:
select * from conversation where id=18
id | name | ownerid
------------------------------
18 | personal group 3|
select * from userconversation where conversationid=18
conversationId | userId
-----------------------
18 | 3
18 | 14
18 | 23
18 | 13978
18 | 18488
现在我想找到具有userIds 3,14,23,13978,18488的对话,并且只有具有该确切用户数的对话。我应该只得到18作为对话而不是其他可能还有其他用户的对话。
有人知道如何在SQL中做到这一点吗?
感谢
答案 0 :(得分:0)
我不确定这是否是您正在寻找的内容,因为您的问题并不清楚,但如果这是您想要的问题,请尝试此操作。
SELECT userId FROM userconversation uc
INNER JOIN conversation c
ON uc.conversationId = c.Id