我有一个名为ChatThreadMember的表。我正在附上表格的数据,以便我的问题得以正确传达。
我正在尝试获取包含我将通过的所有ReceiverInteral的ChatThreadId。
对于前。当我通过以下3个ReceiverInternals
时我应该只获得6CE1F6A9-8254-4D5A-8C9D-FEC680B60B2F
作为ChatThreadId,因为它是唯一包含所有3个ReceiverInternals的ChatThreadId。
然而,在我的所有试验中,我得到了DF04A5D4-E586-4398-B8DB-13B411EOED5D
以及我不需要的6CE1F6A9-8254-4D5A-8C9D-FEC680B60B2F
。
我的查询是:
SELECT cth.ChatThreadId from ChatThreadMember cth where cth.ReceiverInternal in
('F7269470-B8C9-447C-8E85-555D9ECF82B6','79D49515-A34C-47A7-BDE8-667778B0327C','9E682E2B-FB3C-41F3-9192-ABFD97D5A8F5')
and
cth.ChatThreadId not in(
SELECT cth.ChatThreadId from ChatThreadMember cth where cth.ReceiverInternal in
(Select cth.ReceiverInternal from ChatThreadMember cth where cth.ReceiverInternal not in ('F7269470-B8C9-447C-8E85-555D9ECF82B6','79D49515-A34C-47A7-BDE8-667778B0327C','9E682E2B-FB3C-41F3-9192-ABFD97D5A8F5')
))
group by cth.ChatThreadId
我遇到了问题。有帮助吗?提前谢谢。
答案 0 :(得分:0)
您需要存在所有ReceiverInternal所需的所有ID。因此,选择它们,在HAVING子句中对它们进行计数,并解除具有较低计数的ID。
select chatthreadid
from chatthreadmember
where receiverinternal in
(
'F7269470-B8C9-447C-8E85-555D9ECF82B6',
'79D49515-A34C-47A7-BDE8-667778B0327C',
'9E682E2B-FB3C-41F3-9192-ABFD97D5A8F5'
)
group by chatthreadid
having count(distinct receiverinternal) = 3;