[英]mysql group and count two columns
我不知道如何在一个表的两列中对名称进行分组和计数。 我的桌子的结构是这样的:
+------+-------------------+
| user | friend1 | friend2 |
+------+---------+---------+
|user1 | Adam | Filip |
|user2 | Boris | Norbert |
|user3 | Filip | Carol |
|user4 | Carol | Filip |
|user5 | Boris | Patricia|
+------+---------+---------+
我想得到的结果是:
+----------+---+
| Filip | 3 |
| Boris | 2 |
| Carol | 2 |
| Adam | 1 |
| Norbert | 1 |
| Patricia | 1 |
+----------+---+
按计数排序。
我尝试过这样的事情:
SELECT friend1 AS friends, friend2 AS friends, COUNT(friends) AS friedscount FROM table GROUP BY friends ORDER BY friedscount DESC
首先使用UNION ALL
合并行,以在子查询中保留重复项,然后计数
SELECT friend, COUNT(*) friedscount
FROM
(
SELECT friend1 AS friend FROM TableName UNION ALL
SELECT friend2 AS friend FROM TableName
) a
GROUP BY friend
ORDER BY friedscount DESC
这是一个演示
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.