【问题标题】:How to render all records如何呈现所有记录
【发布时间】:2019-07-10 00:58:12
【问题描述】:

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

样本数据:

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

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

感谢您的帮助

【问题讨论】:

  • 这在MySql 8中更容易做到。那么MySql是哪个版本的呢?
  • 不幸的是我使用的是 MYSQL 5.5

标签: mysql sql join count window-functions


【解决方案1】:

使用 MySQL

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

【讨论】:

  • 感谢您的即时回复和宝贵的帮助。这正是我所需要的。问候,克里斯
  • 欢迎@Chris!如果我的回答正确回答了您的问题,请点击绿色复选标志accept it...此外,您应该很快就能投票...谢谢!
  • 当然!感谢您的宝贵时间
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多