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

如何用SQL实现学生登录更新与借书记录的三类场景整合?

学生登录与借书记录整合SQL实现方案

基础匹配规则

  • 两张表的联合主键:doc_part1、doc_part2、doc_part3
  • 日期关联匹配规则:表1的date_update_login与表2的borrow_book日期需完全一致

Case 1:仅更新登录未借书的记录

筛选表1中存在登录更新记录,但表2中无同日借书记录的学生数据:

SELECT 
    si.*,
    '仅更新登录' AS record_type
FROM student_info si
LEFT JOIN student_borrow sb
    ON si.doc_part1 = sb.doc_part1
    AND si.doc_part2 = sb.doc_part2
    AND si.doc_part3 = sb.doc_part3
    AND si.date_update_login = sb.borrow_book
WHERE sb.doc_part1 IS NULL;

逻辑说明:通过左连接关联两张表,过滤掉表2中匹配到的记录,剩余即为仅登录未借书的条目。


Case 2:更新登录且同日借书的记录

筛选同时存在当日登录更新和借书记录的学生数据,整合两张表的字段:

SELECT 
    si.*,
    sb.*,
    '更新登录且同日借书' AS record_type
FROM student_info si
INNER JOIN student_borrow sb
    ON si.doc_part1 = sb.doc_part1
    AND si.doc_part2 = sb.doc_part2
    AND si.doc_part3 = sb.doc_part3
    AND si.date_update_login = sb.borrow_book;

逻辑说明:使用内连接仅保留两张表中主键和日期都完全匹配的记录,此类记录同时满足两个操作。


Case 3:仅借书未更新登录的记录

筛选表2中存在借书记录,但表1中无同日登录更新记录的学生数据:

SELECT 
    sb.*,
    '仅借书未更新登录' AS record_type
FROM student_borrow sb
LEFT JOIN student_info si
    ON sb.doc_part1 = si.doc_part1
    AND sb.doc_part2 = si.doc_part2
    AND sb.doc_part3 = si.doc_part3
    AND sb.borrow_book = si.date_update_login
WHERE si.doc_part1 IS NULL;

逻辑说明:以借书记录表为主体左连接登录信息表,过滤掉表1中匹配到的记录,剩余即为仅借书未登录的条目。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 13:29:55