mysql - 如何在特定时间范围内显示来自不同表的值 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 之间的链接(也许)。非常感谢您提供的任何帮助。
以下是表格:
解决方案
你可以把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
条款改回原来的状态。
推荐阅读
- javascript - 打字时ReactJS延迟onChange
- c# - 在 Excel 工作表的 A 列中查找一个数字并将该值添加到 B 列
- system-verilog - SystemVerilog 中的赋值,编译错误 - 令牌是“赋值”
- sqlite - 我尝试在 ionic 上使用 sqlite,但它一直给我 5 个错误
- python - 如何拼凑 DNA 的短片段?匹配序列文件中的碱基对
- python - QTreeView 出现问题,不显示文件夹
- .net - 为什么从 DbQuery 返回的 Entity Framework Core POCO 必须是公开的?
- algorithm - 给定一个字母计数表和一个单词列表,使用所有字母找到 N 个单词
- api - 开源软件创建语音聊天应用的建议
- c# - 如何使用 Mailkit 搜索比特定时间戳更新的邮件?