如何呈现所有记录

时间:2019-02-15 20:48:26

标签: mysql sql

我想使用MYSQL5.5通过将Count添加为新列并在COUNT中使用特定的DESC顺序来显示所有记录。

样本数据:

ID|ID_2|FIRST|SECOND|
88|300 |1    |4
81|300 |1    |5
7 |300 |2    |1
33|300 |3    |4
99|300 |1    |4
84|300 |1    |5
6 |300 |1    |4
34|300 |3    |5

查询:

SELECT a.ID,a.ID_2, a.FIRST, a.SECOND, COUNT(a.ID) as testing
FROM table AS a
WHERE a.ID_2=300
GROUP BY a.ID_2, a.FIRST, a.SECOND
ORDER BY testing DESC

使用上面的代码,我得到了正确的COUNT(a.ID)号,包括FIRST和SECOND的所有组合以及COUNT。

结果:

a.ID|a.ID_2|a.FIRST|a.SECOND|testing|
88  |300   |1      |4       |3        
81  |300   |1      |5       |2
7   |300   |2      |1       |1
33  |300   |3      |4       |1
99  |300   |3      |5       |1

但是我想得到以下内容:

a.ID|a.ID_2|a.FIRST|a.SECOND|testing|
88  |300   |1      |4       |3  
99  |300   |1      |4       |3
6   |300   |1      |4       |3      
81  |300   |1      |5       |2
85  |300   |1      |5       |2
7   |300   |2      |1       |1
33  |300   |3      |4       |1
99  |300   |3      |5       |1

您能帮上忙吗?即使有临时表。

感谢您的帮助

1 个答案:

答案 0 :(得分:2)

使用MySQL <8.0,您可以使用计算相关计数的聚合子查询自联接表:

SELECT t.*, t2.testing
FROM
    mytable t
    INNER JOIN (
        SELECT a.ID_2, a.FIRST, a.SECOND, COUNT(a.ID) as testing
        FROM mytable a
        GROUP BY a.ID_2, a.FIRST, a.SECOND
    ) t2 ON t.ID_2 = t2.ID_2 AND t.FIRST = t2.FIRST AND t.SECOND = t2.SECOND