You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server中如何获取图书借阅表最新记录以筛选可借图书

解决图书可借阅视图的问题

你原来的视图逻辑存在漏洞:它只是筛选了所有已归还的借阅记录,但同一本书只要有过已归还的历史记录就会被纳入结果,完全忽略了这本书可能存在未归还的最新借阅记录。要得到正确的可借阅图书列表,必须先锁定每本书的最新借阅状态,再判断是否已归还。

可以通过窗口函数ROW_NUMBER()实现需求,具体的视图创建代码如下:

CREATE VIEW free_books AS
SELECT book_name
FROM (
    SELECT 
        book_name,
        date_returned,
        -- 按图书名称分组,每组内按借阅日期倒序排序,最新的借阅记录标记为1
        ROW_NUMBER() OVER (PARTITION BY book_name ORDER BY date_borrowed DESC) AS rn
    FROM book_borrowing
) AS latest_borrow_records
WHERE rn = 1  -- 仅保留每本书的最新借阅记录
  AND date_returned IS NOT NULL;  -- 最新记录已归还,说明图书当前可借

逻辑说明

  1. 子查询中,用ROW_NUMBER()为每本书的所有借阅记录按借阅日期从新到旧编号,最新的记录会被标记为rn=1;
  2. 外层查询只筛选rn=1的记录(即每本书的当前最新借阅状态),再从中挑选已归还(date_returned不为null)的图书,就是当前真正可借阅的。

用你提供的测试数据验证,该视图会仅返回'To kill a Mockingbird',符合预期。

内容的提问来源于stack exchange,提问作者StudentZF

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 15:15:32