我有一个标签表,希望从列表中获得最多的标签.

样本数据如下所示

id (1) tag ('night')
id (2) tag ('awesome')
id (3) tag ('night')

使用

SELECT COUNT(*), `Tag` from `images-tags`
GROUP BY `Tag`

把我要找的数据找回来.然而,我想组织它,这样最高的标签计数是第一位的,并限制它只发送给我前20个左右.

我试过这个...

SELECT COUNT(id), `Tag` from `images-tags`
GROUP BY `Tag`
ORDER BY COUNT(id) DESC
LIMIT 20

我不断收到"组函数的无效使用-ErrNr 1111"

我做错了什么?

I'm 使用 MySQL 4.1.25-Debian

推荐答案

在所有版本的MySQL中,只需在 Select 列表中为聚合添加别名,然后按别名排序:

SELECT COUNT(id) AS theCount, `Tag` from `images-tags`
GROUP BY `Tag`
ORDER BY theCount DESC
LIMIT 20

Mysql相关问答推荐

MYSQL子查询

如何在JOIN中获取MySQL中的项目总数

如何在WooCommerce中更新pm_Virtual.meta_Value=#39;否

MySQL逻辑全部

使用复合主键更新后的MySQL触发器失败

如何合并有多行的json列

Group_CONCAT CASE 乘法输出

仅计算 DATEDIFF (MySQL) 中的工作日

MySQL Join 查询位置从订单

按年份范围 SQL 查询分组

MySQL 中的 LATERAL 语法 - 是否只是说左表首先执行以便下一个可以引用它?

非常规字符的不正确字符串值错误

MYSQL 或 Laravel Eloquent 如何从这个订单中统计细节

SUBSTRING_INDEX 获取第 n 个值

使用case查询并更新最后一条记录

从一个带有连接的表中删除

如何通过 mysql workbench 将数据导入 mysql 数据库?

如何在 MySQL 上一次删除一系列记录?

INSERT ... 使用 WHERE 进行重复的密钥更新?

如何将 mysqldump 的输出拆分为较小的文件?