我想使用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
您能帮上忙吗?即使有临时表。
感谢您的帮助
答案 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