微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

按嵌套表计数排序

如何解决按嵌套表计数排序

我有两个表Major(majorId,label)Minor(minorId,majorId)

我要按未成年人(和标签)的计数归还少校。

类似的东西:

SELECT majorId,label
FROM Major ma
ORDER BY
  (SELECT COUNT(*)
   FROM Minor mi
   WHERE mi.majorId=ma.majorId),label;

我想象它的工作方式是:将Minor表按majorId分组,然后为每个majorId计数行,然后按该核心响应计数然后按标签对Major表进行排序。

解决方法

如何?

SELECT majorId,label
FROM Major ma
ORDER BY (SELECT COUNT(*) FROM Minor mi WHERE mi.majorId=ma.majorId 
group by mi.majorId),label ;
,

除了分组之外,您还可以使用横向联接:

SELECT majorId,label,tMinor.cnt 
FROM Major AS ma 
LATERAL
(
     SELECT COUNT(*) AS cnt 
     FROM Minor AS mi 
     WHERE mi.majorId = ma.majorId
) AS tMinor 

ORDER BY cnt,label

或传统上与组:

SELECT 
     majorId,COUNT(DISTINCT mi.minorId) AS cnt 
FROM Major AS ma 

LEFT JOIN Minor AS mi 
     ON mi.majorId = ma.majorId

GROUP BY majorId,label

ORDER BY cnt,label

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。