繁体   English   中英

按另一个表的计数选择记录顺序(未在MySQL中检索正确的计数)

[英]Select records order by count of another table not retrieving correct count in Mysql

在mysql db中,我有两个表bookratingtable

图书表具有三个字段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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM