dch*_*cke 2 mysql sql count having
我有一个名为参与者的表,其中包含以下字段:
背景是与至少两个或更多参与者进行对话.我想找到一个仅由两个指定用户持有的对话,而对话中没有其他用户.
我想出了以下内容:
SELECT *
FROM participants
WHERE user_id = 1 OR user_id = 2
GROUP BY conversation_id
HAVING COUNT(*) = 1
Run Code Online (Sandbox Code Playgroud)
鉴于此内容
参与者表格图像http://s12.postimage.org/af4xrfoax/table.png
您可以看到用户1和2与用户3(对话1)共享对话,但也只有一个对话(对话2).
上面的查询实际上返回了正确的conversation_id(即2) - 但我不确定查询是否正确.当我说它HAVING COUNT(*) = 2返回对话1时,我不知道为什么.直觉上我使用了计数 - 如果设置为1似乎也可以工作 - 但我不确定它在这种情况下是做什么的.
查询是否正确?如果是这样,为什么?如果没有,我需要更改什么才能使其正常工作?
由于该where子句过滤掉了user_ids,因此使用您的查询将不起作用.使用
SELECT * FROM participants
GROUP BY conversation_id
HAVING sum(user_id not in (1,2)) = 0
Run Code Online (Sandbox Code Playgroud)
user_id not in (1,2)返回1如果user_id除了1,2正在通话和0其他.所以使用SUM你可以加起来所有的情况.如果没有找到,则总和为0.
| 归档时间: |
|
| 查看次数: |
224 次 |
| 最近记录: |