php - 两个计数之间的差异

标签 php mysql count

我有一个 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_countu_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;

An SQLfiddle to test with .

关于php - 两个计数之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17793263/

相关文章:

php - mysqli 使用带有准备好的语句和查询的 select *

Mysql 连接两个表,其中包含不同类型的记录

php - 使用 MYSQL 中的数据填充 <div>`

r - 计算 R 中每年没有 N/A 的观察次数

python - Python中的条件计数

php - 检查所有列的值

php - 将数组分配给静态函数变量php

php - 如何在PHP中使用WHERE中的if语句编写sql查询

php - 获取pdf中带有日期的姓名数量

PHP 脚本在将数据从 CSV 导入 MySQL 时不断超时