admin

在``ultiple''列中获取每个不同值的计数

sql

所以说我有

| id | value |
--------------
|  1 |   A   |
|  2 |   B   |
|  3 |   B   |
|  4 |   A   |
|  5 |   A   |

然后运行以下SQL语句

SELECT value, COUNT(*) AS `num` FROM test2 GROUP BY value

我会得到A:3和B:2

很好,但是如果我想从多个列中合并

| id | value | Value2 | Value 3|
---------------------------------
|  1 |   A   |   A    |    A   |
|  2 |   B   |   A    |    B   |
|  3 |   B   |   B    |    B   |
|  4 |   A   |   A    |    A   |
|  5 |   A   |   B    |    A   |

在上面的A:9 B:6中。目前,我只能运行上述语句3次,然后在php端添加该值。但是我认为用1条语句完成所有操作可能会有一个巧妙的小技巧。


阅读 179

收藏
2021-06-07

共1个答案

admin

使用将三列合并为一列,Union all然后在外部查询中找到每个组的计数。试试这个。

SELECT value,
       Count(value)
FROM   (SELECT value AS value FROM test2
        UNION ALL
        SELECT value2 FROM test2
        UNION ALL
        SELECT value3 FROM test2)a
GROUP  BY value
2021-06-07