查找其ID在列表中的行,并且计数是相同的

时间:2016-03-30 18:04:56

标签: sql database

我正在尝试从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中做到这一点吗?

感谢

1 个答案:

答案 0 :(得分:0)

我不确定这是否是您正在寻找的内容,因为您的问题并不清楚,但如果这是您想要的问题,请尝试此操作。

SELECT userId FROM userconversation uc
INNER JOIN conversation c
ON uc.conversationId = c.Id