Mysql 表中的顶级值
我使用这个SQL查询来获取某个类别的书籍被租用了多少次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 现在,如果我想得到最受欢迎的书,这
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-组函数的无效使用,因此错误消失了,但结果与我在这里尝试实现的相反。它返回的不是最受欢迎的类别,而是最不受欢迎的类别。