php - 计算 2 个字段中不同值的出现次数

标签 php mysql

我正在尝试找到一个 MySQL 查询,它将在特定字段中找到不同的值,计算该值在 2 个字段(1_user、2_user)中出现的次数,然后按计数对结果进行排序。

示例数据库

+------+-----------+-----------+
|   id | 1_user    | 2_user    |
+------+-----------+-----------+
|    1 |       2   | 1         | 
|    2 |       3   | 2         | 
|    3 |       8   | 7         | 
|    4 |       1   | 8         | 
|    5 |       2   | 8         |
|    6 |       3   | 8         |  
+------+-----------+-----------+

预期结果

user       count
-----      -----
8          4
2          3
3          2
1          2

最佳答案

查询

SELECT user, count(*) AS count
FROM
(
    SELECT 1_user AS USER FROM test

    UNION ALL

    SELECT 2_user FROM test
) AS all_users
GROUP BY user
ORDER BY count DESC

解释

在第一列列出所有用户。

SELECT 1_user AS USER FROM test

将它们与第二列中的用户合并。

UNION ALL
SELECT 2_user FROM test

这里的技巧是 UNION ALL保留重复值。

剩下的很简单——从子查询中选择你想要的结果:

SELECT user, count(*) AS count

按用户汇总:

GROUP BY user

并规定顺序:

ORDER BY count DESC

关于php - 计算 2 个字段中不同值的出现次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12017271/

相关文章:

php - Mysql性能更新in()

php - 在 mysql 中创建查询的问题

php - 将 sql-request 转换为 datatables-type 请求

php - 如何在两个Android设备之间传输数据?

php - 如何在每个选项标签中显示多个值?

php - 正则表达式匹配任何以破折号开头的连续行

mysql - CONCATENATED INSERT 不接受 WHERE 子句

python - sqlalchemy mysql 连接没有在 flask api 上关闭

MySQL单查询,父子关系跨表存储

php - SQL php在不同页面上插入(mysqli)