如何解决按嵌套表计数排序
我有两个表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 举报,一经查实,本站将立刻删除。