SQL学习笔记怎么变成能听的复习课?从LEFT JOIN丢掉一个人说起
如果豆包或ChatGPT帮你写了一篇SQL学习笔记里面全是代码、表格和“看上面的结果”直接点朗读经常会丢掉关键参照你听见了一串字段名却不知道哪个人为什么没了。我做了一个具体示范同样一个左连接问题先在SQLite里实际运行四种查询再改写成一篇可以离开屏幕收听的中文复习稿。本文附完整代码、结果与听稿提示词。我是「自听」MyListen开发者文稿由AI辅助制作并核查例子人物和订单是教学虚构。「自听」负责的是最后一步把已经准备好的长文在iPhone本地生成、保存为能续听的音频。先把讲稿做好再选择合适的朗读方式。完整中文示例7分51秒附讲稿、代码、实际结果和提示词https://godgod126.github.io/listening-script-kit/learning/sql-left-join/示例声音由AI合成在Mac上使用归档1.1.5/build83模型生成不是当前1.1.7的iPhone录音。音频与素材免费可用不需要购买App技术名词请结合文字和代码核对。一个听得懂、也能跑的例子登记用户只有三位阿青有一笔已付款订单小林只有一笔未付款订单小周没有订单。需求是“所有用户都要在名单上如果有付款订单就放到名字旁边”。CREATETABLEusers(idINTEGERPRIMARYKEY,nameTEXTNOTNULL);CREATETABLEorders(idINTEGERPRIMARYKEY,user_idINTEGERNOTNULL,statusTEXTNOTNULL);INSERTINTOusersVALUES(1,阿青),(2,小林),(3,小周);INSERTINTOordersVALUES(101,1,paid),(102,2,unpaid);先按用户编号连接再在WHERE里要求已付款SELECTu.name,o.id,o.statusFROMusers uLEFTJOINorders oONo.user_idu.idWHEREo.statuspaidORDERBYu.id;实际只留下阿青。小林的订单未付款小周补出的订单状态是NULL都没有通过最后的筛选。把已付款放在ON中让它成为“什么订单可以匹配”的要求SELECTu.name,o.id,o.statusFROMusers uLEFTJOINorders oONo.user_idu.idANDo.statuspaidORDERBYu.id;实际结果是三位用户阿青带一笔付款订单小林和小周的订单编号、状态为NULL。这才是最初要求的名单。不要漏掉小林这个反例。下面的常见改法也不能完整替代第二种查询SELECTu.name,o.id,o.statusFROMusers uLEFTJOINorders oONo.user_idu.idWHEREo.statuspaidORo.idISNULLORDERBYu.id;它留下阿青和小周仍然丢掉小林小林确实有订单编号不为空只是没有付款。所以“最后允许空值”和“连接时只找付款订单”不能在这个例子里互换。若要统计每位用户的付款订单可以在第二种连接的基础上数订单编号SELECTu.name,COUNT(o.id)ASpaid_countFROMusers uLEFTJOINorders oONo.user_idu.idANDo.statuspaidGROUPBYu.id,u.nameORDERBYu.id;实际是一、零、零。COUNT订单编号不计NULLCOUNT所有结果行会把左连接保留的那行也算进去。这些结果在本地SQLite 3.49.1实际运行验证。SQLite官方SELECT文档的2.3节说明外连接补出的NULL行发生在ON之后、WHERE之前WHERE表达式为假或NULL的行会被排除。这里是语义解释顺序不是数据库物理执行计划。官方文档https://www.sqlite.org/lang_select.html#whereclause把参照物放进句子原笔记如果写“第二种查询保留第三行”眼睛还能来回找。耳朵听到这句话就很难知道第三行是谁。改成听稿可以这样写阿青有符合要求的订单于是留下阿青和那笔订单。小林虽然有订单但它尚未付款所以不是这次连接想找的订单。左连接没有为小林找到符合条件的记录于是仍然保留小林只让订单位置空着。小周根本没有订单也没有匹配到记录于是保留小周订单位置同样空着。最终三个人都在正好符合老板最初的要求。这段没有逐字符念SQL但人物、条件、结果都保留下来了。每次换查询重新交代人物状态不靠“如上表”“这一个”“第二列”维持意思。也别让AI把结论写成“条件只能放在ON里”。如果业务就是只找付款者WHERE筛已付款可以满足目标。听稿要讲出条件和业务之间的关系不能只给一个好背、却过度概括的口诀。一份可以复制的提示词把下面的SQL笔记改成中文复习听稿。听众暂时不能看代码和表格。 保留我提供的查询、实际结果和反例不补造测试。 先用中文解释条件问什么再说明每个人为什么留下或离开。 每次重新交代人物和状态避免“如上表”“这一列”等视觉指代。 不要逐字符念代码来源网址与代码放在独立核查附录。 ON与WHERE讲的是逻辑语义不宣称物理执行顺序。 不要把仅有未付款订单和没有任何订单混为一谈。 输出一份可朗读正文一份与实际查询结果逐条对应的核查附录。 最后检查有没有漏掉反例有没有把两种业务需求混成一个。生成稿以后先拿它和实际结果对照再决定怎么听。听稿适合复习概念回到电脑上还是需要亲自跑代码这里没有做学习效果或考试成绩实验。自己的学习笔记放进自己的节目如果只是临时听一段可以使用设备已有的朗读功能。如果希望长文保存为一期节目、锁屏收听、下次接着听可以把整理好的正文粘贴到「自听」MyListen或者导入TXT、Markdown。它在iPhone本地生成自然流畅的声音。点击生成稍等片刻就能一边生成一边听支持保存收听进度和导出M4A。无广告、无订阅可免费下载试用完整功能通过App内购买解锁。当前商店最低系统要求为iOS16.4具体功能以商店页面和试用为准。这份示例代码、讲稿和提示词可以独立使用不需要购买App。中国区App Storehttps://apps.apple.com/cn/app/id6790382144

相关新闻

把 Codex auth.json 改到 TaoToken:接入 DeepSeek 的配置与验证

把 Codex auth.json 改到 TaoToken:接入 DeepSeek 的配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 12:24:00 阅读更多 →
ASP+SQL Server实现民航售票管理系统:从数据模型到部署答辩完整指南

ASP+SQL Server实现民航售票管理系统:从数据模型到部署答辩完整指南

简介:民航售票管理系统毕业设计资料包,基于ASP与SQL Server数据库开发,面向计算机专业学生、毕业设计选题者以及初学Web开发的读者,可用于毕业设计、课程设计或项目练手。系统采用B/S结构,分为民航管理系统和民航售票系…

2026/10/10 12:24:00 阅读更多 →
总结一下常用的VSCode插件:从Cline MCP到TaoToken统一Key的配置清单

总结一下常用的VSCode插件:从Cline MCP到TaoToken统一Key的配置清单

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 12:24:00 阅读更多 →

最新新闻

零基础 30 分钟出片:用万相 Animate 把角色设定变成可复用的动画素材

零基础 30 分钟出片:用万相 Animate 把角色设定变成可复用的动画素材

零基础 30 分钟出片:用万相 Animate 把角色设定变成可复用的动画素材 【免费下载链接】Wan2.2-Animate-2-14B 项目地址: https://ai.gitcode.com/hf_mirrors/Wan-AI/Wan2.2-Animate-2-14B 做一条角色动画,过去意味着什么?画角色设定、…

2026/10/10 21:18:06 阅读更多 →
用C语言手写迷你编译器:词法、语法、符号表与解释执行全解

用C语言手写迷你编译器:词法、语法、符号表与解释执行全解

简介:这是一份基于C语言实现小型编译程序的课程设计资源,面向编译原理课程学生及需要完成编译实验的开发者,核心目标是演示如何将高级语言源代码逐步转换为四元式中间表示,并提供一个可运行的编译框架。资源中注释清晰&#xff0c…

2026/10/10 21:18:06 阅读更多 →
Java Spring Boot实战:大学生国学自主学习平台设计与实现

Java Spring Boot实战:大学生国学自主学习平台设计与实现

前阵子整理自己手头的课程设计项目时,我把这个基于Java Spring Boot的大学生国学自主学习平台重新过了一遍代码、补全了文档、录制了运行演示视频和核心代码讲解视频,最后把源码、数据库脚本、部署文档打包成一套完整的学习资料。这套东西从一开始就不是…

2026/10/10 21:18:06 阅读更多 →
维普AIGC检测降AI率实战:从38%到3%的完整改写方法论

维普AIGC检测降AI率实战:从38%到3%的完整改写方法论

第一次把论文初稿丢进维普AIGC检测,看到38%的AI疑似率时,我的第一反应是逐句改:把“首先”换成“第一”,把“综上所述”全部删掉,把“促进”“提升”这类动词换成意思相近但更生僻的词。改完四十多分钟,再测…

2026/10/10 21:18:05 阅读更多 →
ThinkPHP项目迁移Swoole实战:常驻内存、连接池与协程优化

ThinkPHP项目迁移Swoole实战:常驻内存、连接池与协程优化

1. 为什么要把 ThinkPHP 项目跑在 Swoole 上先聊个现象。很多 PHP 开发者一说 Swoole 就摇头,觉得那是“常驻内存”的东西,心智负担重,学了容易忘,项目一忙就想扔回 FPM 的怀抱。但真实场景是——你的 ThinkPHP 项目一旦流量上来&…

2026/10/10 21:18:05 阅读更多 →
云桌面厂家实力排行:办公、设计、教学场景精准适配

云桌面厂家实力排行:办公、设计、教学场景精准适配

在企业数字化升级的大背景下,传统物理PC运维繁琐、数据分散、算力不足等问题逐渐凸显,云桌面成为政企、工业、教育等行业的主流替代方案。市面上云桌面厂家数量繁多,产品架构、适配场景、服务能力参差不齐,多数企业选型时容易陷入…

2026/10/10 21:17:05 阅读更多 →

日新闻

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

1. 从“卫星轨道分类”这个标题说起:为什么值得花时间搞懂第一次接触“卫星轨道分类”这个概念,很多人会觉得它离自己很远——不就是天上的星星怎么转吗?但如果你正在做航天任务规划、遥感数据接收、星座设计,甚至只是准备一场航天…

2026/10/10 0:00:39 阅读更多 →
Spring AOP 核心原理与实战:从概念到日志切面落地

Spring AOP 核心原理与实战:从概念到日志切面落地

1. 从一个真实痛点说起:为什么你的代码里到处都是重复逻辑刚入行那会儿,我写过一个用户管理模块,注册、登录、改密码、注销四个接口。每个接口里都塞了几乎一样的日志打印、参数校验、事务开启和提交。当时觉得没什么,能跑就行。直…

2026/10/10 0:00:40 阅读更多 →
Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

简介:这是一套面向计算机相关专业学生与项目实战学习者的Python数据采集与分析可视化完整项目,以Boss直聘岗位数据为对象,适合用作毕业设计、课程设计或期末大作业。资源包共38个文件,约246KB,以13个py源码文件为核心&…

2026/10/10 0:00:40 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 11:14:25 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 1:36:08 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 11:14:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 5:23:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 10:38:42 阅读更多 →