我有一个 mysql 表 private_messages
(pm
),如下所示:
用户id --- 发件人 --- 文本
而 Userid 和 Sender 都是来自表 user
的 ID。
现在我想做一个查询,其中用户获取他发送给另一个用户的 pms 数量与从该用户接收到的 pms 数量之间的差异 - 按 Userid
分组
所以我想将这两个查询合二为一,并从中找出不同之处:
SELECT count(*) AS s_count, sender FROM pm WHERE userid=".$userid" GROUP BY sender
SELECT count(*) AS u_count, userid FROM pm WHERE sender=".$userid." GROUP BY userid
现在我想要在所有匹配的 Userid 上区分 s_count
和 u_count
。
最佳答案
如果您想要统计与您联系过的每个用户,您可以使用 UNION ALL
收集所有消息并在外部查询中对它们求和;
SELECT counterpart, SUM(sent) sent, SUM(received) received,
SUM(sent) - SUM(received) difference
FROM (
SELECT 1 sent, 0 received, userid counterpart
FROM messages WHERE sender = <your user id>
UNION ALL
SELECT 0 sent, 1 received, sender counterpart
FROM messages WHERE userid = <your user id>
) a
GROUP BY counterpart;
关于php - 两个计数之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17793263/