Mysql 表中的顶级值

Mysql 表中的顶级值,mysql,Mysql,我使用这个SQL查询来获取某个类别的书籍被租用了多少次 SELECT Category.name, COUNT(*) AS "times rented" FROM Category INNER JOIN Book ON Book.category=Category.name INNER JOIN Rent ON Rent.book_id=Book.id GROUP BY Category.name ORDER BY COUNT(*) DESC LIMIT 1 现在,如果我想得到最受欢迎的书,这

我使用这个SQL查询来获取某个类别的书籍被租用了多少次

SELECT Category.name, COUNT(*) AS "times rented"
FROM Category
INNER JOIN Book ON Book.category=Category.name
INNER JOIN Rent ON Rent.book_id=Book.id
GROUP BY Category.name
ORDER BY COUNT(*) DESC
LIMIT 1
现在,如果我想得到最受欢迎的书,这将非常有效。问题在于“限制1”。根据上面的查询结果,我有多本书被出租了。删除“限制1”只会返回所有租用的类别

假设上面的查询返回

name | times rented
Adventure 153
Comics 153
Biography 102
Romance 80
如何返回“冒险”和“漫画”?

您可以使用MAX()

您可以使用MAX()


您可以使用max of count进行比较,并在
时间中用
倒勾
替换
,将其用作别名而不发出警告

SELECT Category.name, COUNT(*) AS `times rented`
FROM Category
INNER JOIN Book ON Book.category=Category.name
INNER JOIN Rent ON Rent.book_id=Book.id
GROUP BY Category.name
having  `times rented` = (select MAX(cnt) from 
(select COUNT(*) as cnt FROM Category GROUP BY Category.name) temp
)

您可以使用max of count进行比较,并在
时间中用
倒勾
替换
,将其用作别名而不发出警告

SELECT Category.name, COUNT(*) AS `times rented`
FROM Category
INNER JOIN Book ON Book.category=Category.name
INNER JOIN Rent ON Rent.book_id=Book.id
GROUP BY Category.name
having  `times rented` = (select MAX(cnt) from 
(select COUNT(*) as cnt FROM Category GROUP BY Category.name) temp
)

这就产生了错误#1111-组函数的无效使用,因此错误消失了,但结果与我在这里试图实现的相反。它返回的不是最受欢迎的类别,而是最不受欢迎的类别。这产生了错误#1111-组函数的无效使用,因此错误消失了,但结果与我在这里尝试实现的相反。它返回的不是最受欢迎的类别,而是最不受欢迎的类别。