使用 COUNT 并将两列的值加在一起

Use COUNT and add the the value of two columns together

我有这个 table,其中包含投票的值:

+-------+-------+
| Vote1 | Vote2 |
+-------+-------+
| Mr. X | Mr. Y |
| Mr. X | Mr. Z |
| Mr. Y | Mr. X |
| Mr. Z | Mr. X |
+-------+-------+

现在我需要 table 中提到的每个人的总出现次数,如下所示:

+--------+-------+
| Person | Votes |
+--------+-------+
| Mr. X  |     4 |
| Mr. Y  |     2 |
| Mr. Z  |     2 |
+--------+-------+

现在我必须通过对两列中的每一列进行 COUNT 查询来手动计算总和。

您可以使用 union all 运算符序列化两列:

SELECT   person, COUNT(*) AS votes
FROM     (SELECT vote1 AS person
          FROM   mytable
          UNION ALL
          SELECT vote2 AS person
          FROM   mytable) t
GROUP BY person

要获得更高的性能,请使用此查询:

SELECT Vote1 Person, (Count(Vote1) + Count(Vote2))Votes FROM mytable GROUP BY Vote1

SELECT Vote2 Person, (Count(Vote1) + Count(Vote2))Votes FROM mytable GROUP BY Vote2

尽可能避免使用UNION or UNION ALL