如何解决需要一个嵌套的SQL查询,该查询从第一个查询中获取计数并计算新的计数
|| 我有一个sql查询,它计算表中不同的fileId的数量。下面给出的是查询,SELECT DISTINCT `fileId` AS FileId,Count( FileId ) AS NumberOfTags
FROM `Tag`
GROUP BY `fileId`
ORDER BY NumberOfTags DESC
该查询的输出如下所示,
FileId. NumberOfTags
1 500
2 500
3 550
4 550
5 550
我需要获取每个NumberOfTag值下的文件数量计数。样本输出应与此类似
NumberOfTags Number of Files
500 2
550 3
第一个查询的结果非常大,大约有300万行。我尝试创建第一个查询结果的表,但也失败并显示错误
ERROR 1206 (HY000): The total number of locks exceeds the lock table size
有人可以告诉我如何创建嵌套查询来执行此任务。
提前致谢。
解决方法
不知道我要问这个问题,但是听起来您需要一个子查询:
SELECT NumberOfTags,COUNT( FileId ) as NumberOfFiles
FROM (
SELECT `fileId` AS FileId,Count( FileId ) AS NumberOfTags
FROM `Tag`
GROUP BY `fileId`
) as rows
GROUP BY NumberOfTags
,Denis查询是您正确执行操作的方法。
只是为了解释它为什么起作用,当您要嵌套查询时,可以通过用括号括起来并用\“ as。\”为其命名来从嵌套查询输出中创建一个临时表。
选择<...>
从(嵌套查询)作为SomeTempTableName;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。