[英]Select records order by count of another table not retrieving correct count in Mysql
在mysql db中,我有两个表book
和ratingtable
。
图书表具有三个字段ID,uniqueid,Title
ratingtable具有三个字段Book_ID,userid,rating
我需要一个查询,该查询group by id
(书表的) group by id
检索记录group by id
并按order by count(rating)
表的) order by count(rating)
检索order by count(rating)
。
我试过这样的查询:
SELECT book.ID,book.Title,COUNT(ratingtable.rating) AS views
FROM book LEFT JOIN ratingtable ON book.ID = ratingtable.book_ID
GROUP BY book.ID
ORDER BY views DESC
但是对于三个值,它将显示错误的计数值。 我不知道会发生什么。
编辑: ratingtable:
书:
在这里,所有的答案[count(rating)]应该为1。 但它显示
帮我解决这个问题。
鉴于您的书号不是唯一的,您得到的结果实际上是正确的。 但是,要获得所需的计数,您可以使用子查询首先将书籍分组,然后进行计数:
SELECT b2.ID, b2.Title,COUNT(ratingtable.rating) AS views
FROM
(SELECT b1.id, b1.title FROM Book b1 Group by b1.id, b1.title) b2
LEFT JOIN ratingtable ON b2.ID = ratingtable.book_ID
GROUP BY b2.ID, b2.Title
ORDER BY views DESC
您需要按书号和书名分组。
SELECT book.ID, book.Title, COUNT(ratingtable.rating) AS views
FROM book LEFT JOIN ratingtable ON book.ID = ratingtable.book_ID
GROUP BY book.ID, book.Title
ORDER BY views DESC
或使用相关子查询进行计数:
select distinct book.ID,
book.Title,
(select count(*) from ratingtable
where book.ID = ratingtable.book_ID) as views
from book
ORDER BY views DESC
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.