使用 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
。
我有这个 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
。