我有一个名为ChatThreadMember的表。我将附加表的数据,以便我的问题得到正确传达。

mysql - SQLite检索正确记录-LMLPHP

我试图获取这样的ChatThreadId,其中包含我将传递的所有ReceiverInteral。

对于前。当我通过以下3 ReceiverInternals


'F7269470-B8C9-447C-8E85-555D9ECF82B6'
'79D49515-A34C-47A7-BDE8-667778B0327C'
'9E682E2B-FB3C-41F3-9192-ABFD97D5A8F5'


我应该仅将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


我被这个问题困住了。有什么帮助吗?提前致谢。

最佳答案

您需要存在所有需要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;

关于mysql - SQLite检索正确记录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32097920/

10-12 03:16