mysql– 从数据透视表中查找一行

mysql– 从数据透视表中查找一行,第1张

概述我有两个叫做会话的表和用户,他们与数据透视表conversation_user绑定,其中包含user_id和conversation_id列.| conversation_id | user_id | |-----------------|---------| | 1 | 1 | | 1 |

我有两个叫做会话的表和用户,他们与数据透视表conversation_user绑定,其中包含user_ID和conversation_ID列.

| conversation_ID | user_ID ||-----------------|---------||               1 |       1 ||               1 |       2 ||               2 |       1 ||               2 |       2 ||               2 |       3 |

我想向数据库发送一些用户ID并检索它们在一起的对话.

例如:

当我发送1和2时,我必须收到conversation_ID 1,当我发送1,2和3时,我必须收到conversation_ID 2.

我怎么写这样的查询?

最佳答案您可以使用GROUP BY和HAVING:

SELECT conversation_ID FROM tab                     -- subquery/temp table/whateverGROUP BY conversation_ID HAVING SUM(user_ID = 1) > 0   AND SUM(user_ID = 2) > 0   AND SUM(user_ID = 3) > 0   AND SUM(user_ID NOT IN (1,2,3)) = 0

SqlFiddleDemo

对于1和2:

SELECT conversation_ID FROM tabGROUP BY conversation_ID HAVING SUM(user_ID = 1) > 0   AND SUM(user_ID = 2) > 0   AND SUM(user_ID NOT IN (1,2)) = 0
总结

以上是内存溢出为你收集整理的mysql – 从数据透视表中查找一行全部内容,希望文章能够帮你解决mysql – 从数据透视表中查找一行所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/1166722.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存