【问题标题】:SQL finding most popular booksSQL查找最流行的书籍
【发布时间】:2021-01-06 08:02:09
【问题描述】:

我有书桌

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

但这并没有给我实际的结果。

任何建议都将不胜感激。

【问题讨论】:

  • 您标记了您的问题 MySQL,但代码无法在 MySQL 中运行。我很困惑。
  • 结果与您的预期有何不同?为什么要加入借阅会员两次?什么叫会员的畅销书?你的意思是他们不止一次借同一本书,你按会员借书的频率对书进行排名?

标签: mysql sql database select subquery


【解决方案1】:

我认为你的连接太多了:

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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-14
    • 1970-01-01
    • 2021-06-04
    • 1970-01-01
    • 1970-01-01
    • 2010-09-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多