MySQL:Count然后按计数总数排序

时间:2015-04-25 16:04:23

标签: mysql

我知道其他帖子谈论这个,但我还没有能够应用这种情况。

这是我到目前为止所做的。

SELECT * 
FROM ccParts, ccChild, ccFamily
WHERE parGC = '26' AND 
  parChild = chiId AND 
  chiFamily = famId 
ORDER BY famName, chiName

我需要做的是查看结果中具有相同ccFamily的ccPart总数。然后,按总数排序。

2 个答案:

答案 0 :(得分:1)

SELECT中,添加count(ccParts) as count然后添加ORDER BY count之类的内容?不确定你的表的结构,所以你可能需要即兴发挥。

答案 1 :(得分:1)

看起来这很接近你想要的东西:

SELECT f.famId, f.famName, pc.parCount
FROM (
    SELECT c.chiFamily AS famId, count(*) AS parCount
    FROM 
      ccParts p
      JOIN ccChild c ON p.parChild = c.chiId
    WHERE p.parGC ='26' 
    GROUP BY c.chiFamily
  ) pc
  JOIN ccFamily f ON f.famId = pc.famId
ORDER BY pc.parCount

内联视图(括号之间)是标题:它进行分组和计数。请注意,您不需要将表ccFamily连接到一起按家庭分组,因为表ccChild已经包含家庭信息。如果您不需要姓氏(即,如果其ID足够),那么您可以单独使用内联视图,并ORDER BY count(*)。外部查询只是将姓氏与结果相关联。

此外,MySQL提供了一种非标准机制,您可以通过该机制将外部查询与内联视图结合使用,但在这种情况下,它对清晰度或简洁性没有太大帮助。我提供的查询应该被任何SQL实现接受,并且首先要学习这样的语法和方法对你有利。