SQL:按条件从不同表中按计数排序

Posted

技术标签:

【中文标题】SQL:按条件从不同表中按计数排序【英文标题】:SQL: order by count from different table with condition 【发布时间】:2012-03-09 08:01:34 【问题描述】:

我想这样显示结果:

记录编号按附加到它的项目数排序

如果

附加的项目数大于100

SELECT r.number,
       r.title,
       COUNT(i.itemnumber)
FROM record r
LEFT JOIN items i ON (r.number = i.number)
WHERE r.title REGEXP 'SQL for idiots'
AND COUNT(i.itemnumber) > 100
GROUP BY r.number
ORDER BY COUNT(i.itemnumber)

这会抛出旧的:

ERROR 1111 (HY000):组函数使用无效

我尝试了一个“HAVING”子句也没有成功。

知道了!

必须用我的 ORDER 子句交换行:

HAVING COUNT(i.itemnumber) > 100
ORDER BY COUNT(i.itemnumber)

【问题讨论】:

【参考方案1】:

您使用 HAVING 子句测试聚合函数的结果。

SELECT r.number,
       r.title,
       COUNT(i.itemnumber)
FROM record r
LEFT JOIN items i ON (r.number = i.number)
WHERE r.title REGEXP 'SQL for idiots'
GROUP BY r.number
HAVING COUNT(i.itemnumber) > 100
ORDER BY COUNT(i.itemnumber)

【讨论】:

以上是关于SQL:按条件从不同表中按计数排序的主要内容,如果未能解决你的问题,请参考以下文章

从访问数据库中按年份获取不同的计数

在 Objection.js 中按急切结果计数排序记录并实现分页?

如何在熊猫中按值计数对列进行排序

按计数排序未正确排序 - SQL (MS Access 2007)

SQL Server - 每季度不同客户的运行计数

SQL 按计数排序