使用MySQL。我有一个看起来像这样的表:

   rawID | a1a | a1b | a2a | a2b | a2c | ...
     1   |  2  |  0  |  0  |  0  |  2  | ...
     2   |  2  |  2  |  0  |  0  |  0  | ...
     3   |  0  |  1  |  1  |  1  |  2  | ...
     4   |  2  |  1  |  2  |  1  |  2  | ...


*字段的可能值在单独的“响应”表中预定义,范围为0-2。

我想要一个结果,使我可以看到每个字段的每个值。我曾经看到过类似的问题,但只涉及一个领域。

我希望我的结果看起来像这样:

   response | a1a | a1b | a2a | a2b | a2c | ...
      0     |  1  |  1  |  2  |  2  |  1  | ...
      1     |  0  |  2  |  1  |  2  |  0  | ...
      2     |  3  |  1  |  1  |  0  |  3  | ...


该表具有每个字段出现每个值(“响应”)的次数。

谢谢你们,

最佳答案

试试看:

SELECT
  response,
  sum(a1a = response) a1aCount,
  sum(a1b = response) a1bCount,
  sum(a2a = response) a2aCount,
  sum(a2b = response) a2bCount,
  sum(a2c = response) a2cCount
FROM t, r
GROUP BY response


输出:

| RESPONSE | A1ACOUNT | A1BCOUNT | A2ACOUNT | A2BCOUNT | A2CCOUNT |
|----------|----------|----------|----------|----------|----------|
|        0 |        1 |        1 |        2 |        2 |        1 |
|        1 |        0 |        2 |        1 |        2 |        0 |
|        2 |        3 |        1 |        1 |        0 |        3 |


小提琴here

不管response表中的项目数量如何,这都将起作用。

关于mysql - 选择MySQL中多个字段的值出现次数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19552745/

10-11 03:06
查看更多