mysql - 计算 ID 与另一列中的特定值一起出现的次数

标签 mysql

如果你能帮我解决语法问题,我需要以下内容 我有一个包含 2 个字段 ID 和优先级的表,如下所示:

ID | Priority |
---------------
101| 1 |
105| 2 |
200| 3 |
104| 4 |
400| 5 |
400| 1 |
102| 2 |
120| 3 |
150| 4 |
210| 5 |
109| 1 |
104| 2 |
200| 3 |
105| 4 |
250| 5 |

我需要的是这个结果(最好)

ID  |TP1|TP2|TP3|TP4|TP5|
-------------------------
101 | 1 |   |   |   |   |
102 |   | 1 |   |   |   |
104 |   | 1 |   | 1 |   |
105 |   | 1 |   | 1 |   |
109 | 1 |   |   |   |   |
120 |   |   | 1 |   |   |
150 |   |   |   | 1 |   |
200 |   |   | 2 |   |   |
250 |   |   |   |   | 1 |
400 | 1 |   |   |   | 1 |

至少这个:

ID | P | T |
------------
101| 1 | 1 |
102| 2 | 1 |
104| 2 | 1 |
104| 4 | 1 |
105| 2 | 1 |
105| 4 | 1 |
109| 1 | 1 |
120| 3 | 1 |
150| 4 | 1 |
200| 3 | 2 |
250| 5 | 1 |
400| 1 | 1 |
400| 5 | 1 |

抱歉。我没有复制这部分。

该表有一堆 ID,每个 ID 都有一个优先级(从 1 到 5)。我需要的是计算任何 ID 具有优先级 1、优先级 2 等的次数。

如果你看看 ID 200 出现了 2 次,优先级为 3 预先感谢您对此的任何提示。

最佳答案

你可以使用这样的东西:

SELECT ID, SUM(IF(Priority = 1, 1, 0)) TP1, SUM(IF(Priority= 2, 1, 0)) TP2, SUM(IF(Priority = 3, 1, 0)) TP3, SUM(IF(Priority = 4, 1, 0)) TP4, SUM(IF(Priority= 5, 1, 0)) TP5 FROM `tab1` GROUP BY ID

关于mysql - 计算 ID 与另一列中的特定值一起出现的次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42915896/

相关文章:

php - 使用 php 将图像保存到不同的 url

mysql - mysql 中的 FIND_IN_SET

php - IF ELSE语句根据count>1或=1执行不同的函数MY SQL php

php - 从 While 循环内的数据库调用时,注释不显示

java - 在java中执行查询不返回结果,但在mysql工作台中仍然返回结果

mysql查询用不同的字段对重复记录进行分组

java - 嵌套异常是 org.hibernate.type.SerializationException : could not deserialize

mysql - 如何在 phpmyadmin 中启用关系 View

MySQL 按天分组不显示当月的结果

mysql - 数据迁移中 key '1' 的重复条目 'PRIMARY'