Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql SQL查找最受欢迎的书籍_Mysql_Sql_Database_Select_Subquery - Fatal编程技术网

Mysql SQL查找最受欢迎的书籍

Mysql SQL查找最受欢迎的书籍,mysql,sql,database,select,subquery,Mysql,Sql,Database,Select,Subquery,我在桌子上有书 BookID BookName 1 BookA 2 BookB 3 BookC 成员表 MemberID MemberName 1 MemberA 2 MemberB 借书台 MemberID BookID 1 1 1 2 2 1 2 2 我想找出Memeber A写的五本畅销书 我尝试了以下查询 SELECT

我在桌子上有书

BookID BookName
 1       BookA
 2       BookB
 3       BookC
成员表

MemberID MemberName
 1          MemberA
 2          MemberB
借书台

MemberID BookID
 1         1
 1         2
 2         1
 2         2
我想找出Memeber A写的五本畅销书

我尝试了以下查询

SELECT        TOP (5) Book.BookTitle, COUNT(*) AS Count, Member_1.MemberName
FROM            Book INNER JOIN
                         Borrow ON Book.BookID = Borrow.BookID INNER JOIN
                         Member ON Borrow.MemberID = Member.MemberID INNER JOIN
                         Member AS Member_1 ON Borrow.MemberID = Member_1.MemberID
                         where Member.MemberName='A'
GROUP BY Book.BookTitle, Member_1.MemberName
ORDER BY Count DESC
但这并没有给我实际的结果


如果您有任何建议,我们将不胜感激。

我认为您的加入太多了:

SELECT TOP (5) b.BookTitle, COUNT(*) AS Count, m.MemberName
FROM Book b INNER JOIN
     Borrow bo
     ON bo.BookID = b.BookID INNER JOIN
     Member m
     ON bo.MemberID = m.MemberID 
WHERE m.MemberName = 'A'
GROUP BY b.BookTitle, m.MemberName
ORDER BY Count DESC;

注意:此语法通常与SQL Server关联,在MySQL中不起作用。在MySQL中,您将使用
LIMIT 5
而不是
SELECT TOP(5)

您将问题标记为MySQL,但代码不会在MySQL中运行。我很困惑。结果和你期望的有什么不同?你为什么要加入借款会员两次?你怎么称呼一位会员的畅销书?你的意思是他们不止一次地借同一本书,你根据会员借书的频率对这些书进行排名?