首页 > 解决方案 > 如何在特定时间范围内显示来自不同表的值 MYSQL

问题描述

我已经为 MYSql 附上了这个问题中包含的表格。我的问题是:

2017 年客户借用的前 5 位作者的名字和姓氏。到目前为止我的代码:

SELECT BookID,BorrowDate COUNT(BookID) AS BookIDCount 
FROM Borrower    
WHERE BorrowDate = 2017
ORDER BY BookIDCount DESC
LIMIT 5

我认为到目前为止,我的代码只显示了 2017 年的前 5 个作者 ID,但我不知道如何显示这些名称。我看到了 AuthorID 和 BookAuthor 之间的链接(也许)。非常感谢您提供的任何帮助。

以下是表格:

在此处输入图像描述

标签: mysqlsqljoingroup-bycount

解决方案


你可以把client桌子带上join。我认为你想要:

select c.clientFirstName, c.clientLastName, count(*) no_books
from borrower b
inner join client c on c.clientId = b.clientId
where b.borrowDate >= '2017-01-01' and b.borrowDate < '2018-01-01'
group by c.clientId, c.clientFirstName, c.clientLastName
order by count(*) desc
limit 5

这被视为borrowDate类型date(或类似)的列,因为它看起来就是这样。如果它只是一个代表年份的数字,那么您可以将where条款改回原来的状态。


推荐阅读