如果你能帮我解决语法问题,我需要以下内容 我有一个包含 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/