MySQL查询结果加序号全解析:从ROW_NUMBER到用户变量与分组排名
说实话数据库开发里最容易被低估的需求就是“给查询结果加个序号”。听起来不就是一列 1、2、3、4 吗可真到动手写的时候版本差异、排序稳定性、分页跳号、分组重排随便一个细节都能让你在测试环境折腾半天。我这些年做过不少报表导出、榜单排名、分组 TopN 之类的活可以说“加序号”这三个字背后藏着一整套值得掰开揉碎讲清楚的东西。这篇就把几种主流实现方式、适用场景和我在实战中踩过的坑一起梳理出来希望能帮正在被这个问题卡住的你省点时间。1. 为什么查询结果需要序号从报表导出到数据核对1.1 序号最常见的三个场景我接触到的“需要序号”的需求基本可以归成三类。第一类是报表导出。运营或者业务同事要一份 Excel 名单第一列通常会有一行行编号方便线下讨论时直接说“第 20 行那条数据有问题”。如果导出的数据没有序号别人用起来会非常别扭Excel 里虽然有行号但筛选、排序之后行号就乱了没法作为稳定的定位依据。这时候在 SQL 里直接生成一列稳定序号导出后一劳永逸。第二类是分页展示。前端页面的列表往往要显示“第几条到第几条”或者给用户一个“总数第 N 行”的直观定位。虽然很多前端框架可以自己算索引但一旦数据来自多表 JOIN或者需要跨页保持统一编号数据库侧生成序号反而更省事。第三类是排名需求。比如按销售额给商品排名、按成绩给学生排名、按时长给用户排名。这里的“序号”不再只是简单的 1 到 N 的连续整数而是“第 1 名、第 2 名、第 2 名并列但下一个还是第 3 名”这样复杂的逻辑。这类需求如果不知道窗口函数纯手工写会非常痛苦。1.2 在 SQL 里完成还是在程序里完成很多人遇到这个需求第一反应是“我直接在后端循环里加个 i 不就行了”。这确实是一个方案但只适合数据量很小、单页展示的场景。程序侧加序号的问题在于一旦数据跨页你用 MySQL 的 LIMIT 一页一页取每页拿到的都是自己那 10 条你的 i 只能从 1 开始拿不到全局的“第 11 条”。想要全局连续你得把页号、页大小、游标位置这些信息都揉进计算逻辑里写起来烦还容易在排序变化时出错。而数据库侧生成序号尤其是用窗口函数一次查询就能拿到带全局编号的完整结果后面不管怎么分页、导出序号都已经绑定在每行数据上了。当然程序侧也有优势比如你不用操心数据库版本逻辑直观。我的建议是单页小数据程序侧随便算报表导出、跨页、排名尽量在 SQL 里解决。2. MySQL 8.0 的正规军ROW_NUMBER() 窗口函数快速上手2.1 基础语法与执行逻辑如果你用的是 MySQL 8.0 或更高版本恭喜你这是最幸福的场景。一个 ROW_NUMBER() 函数就能解决几乎所有“加序号”的需求。SELECT ROW_NUMBER() OVER (ORDER BY created_at DESC, id DESC) AS row_num, id, user_name, created_at FROM user_info WHERE status 1;这条 SQL 的产出很直观结果集会按照created_at和id从大到小排列同时row_num从 1 开始逐行递增成为一个连续的序列。很多人第一次看到 OVER 关键字会有点懵其实可以这么理解窗口函数就是把排序这件事放在“窗口”里单独完成。普通查询先查出所有符合条件的行然后窗口函数在结果集上再跑一遍排序逻辑给每行计算出一个序号。它不需要你额外写子查询也不需要维护任何变量数据库引擎自己搞定了。2.2 OVER 里排序字段的选择细节给序号用的 ORDER BY 和查询结果展示的排序最好保持一致否则会出现“序号是序号顺序是顺序”的割裂感。比如你查询里要按user_name排序但为了加序号却用created_at排序那最终展示出来的列表用户名字母顺序和序号完全对不上看起来很诡异。另一个容易忽略的细节是排序字段的唯一性。假设你只写ORDER BY created_at DESC而同一秒内创建了 100 条数据这 100 条的先后顺序在数据库层面是不确定的。也就是说这 100 条记录每次查询得到的 row_num 可能都不一样。这在排查问题的时候非常讨厌两次查询结果除了序号其他字段一模一样但你没法给业务同事一个合理的解释。所以我的习惯是在排序字段后面加上一个**唯一字段作为“打破平局”tiebreaker**的补充排序条件最常见的就是主键 idROW_NUMBER() OVER (ORDER BY created_at DESC, id DESC) AS row_num这样能确保每条记录的排序位置在多次查询中完全一致序号也随之稳定下来。如果你还要在窗口里按其他业务字段排序也尽量在最后补一个主键兜底。2.3 窗口函数在大数据量查询下的表现窗口函数方便是真方便但性能上要有点心理预期。当 MySQL 需要对一个大结果集做ROW_NUMBER() OVER (ORDER BY ...)时它必须在内存或临时表里对整个结果集排序数据量大到内存放不下时就会使用磁盘临时表查询时间会明显拉长。我处理过一个几十万行的明细表加上窗口函数之前只要几百毫秒加上之后直接变成两三秒。原因就是这个排序全量数据。这时候有几个办法先过滤再开窗尽量把 WHERE、JOIN 条件下推让参与排序的行数少一点。善用索引如果窗口函数里的 ORDER BY 字段能命中索引MySQL 可以直接利用索引的排列顺序省掉一次额外排序。所以高频使用的排序字段一定要评估是否该建复合索引。避免在大结果集上排序如果你的场景是导出全量数据那么一次全量排序无法避免但如果是分页查询可以仅在当前页范围的数据里计算序号而不是整个表全排。这些优化手段不一定每次都能用上但至少要知道问题出在“排序”而不是“函数本身”。3. 老版本MySQL的兜底方案用户变量手工累加行号3.1 最经典的写法自连接初始化变量如果你的数据库还跑在 MySQL 5.7 或者更老的版本上那就没有 ROW_NUMBER() 可用了。这个阶段我用的最多的方案是“用户变量”。核心思路很朴素定义一个变量每查一行就加 1把加完的值作为序号输出。SELECT rownum : rownum 1 AS row_num, id, user_name, created_at FROM user_info CROSS JOIN (SELECT rownum : 0) r WHERE status 1 ORDER BY created_at DESC, id DESC;这里最精巧也最容易遗漏的是CROSS JOIN (SELECT rownum : 0) r这一段。它的作用是在执行查询前先把变量初始化为 0否则如果这个变量在本次会话中从未定义过初值就是 NULLNULL 加 1 仍然是 NULL你什么都加不出来。很多人第一次写用户变量方案时不加这段跑出来全是 NULL 或者一堆乱序编号其实就是初始化没做对。通过交叉连接一个仅包含初始值的小派生表能保证每一条待查询的记录都带着一个已经初始化的变量进入逐行计算流程。3.2 分页与导出场景的连续序号处理在老版本里手动维护全局连续序号是我踩坑最多的地方。先看分页场景。很多人直接写SELECT rownum : rownum 1 AS row_num, id, user_name FROM user_info ORDER BY created_at DESC, id DESC LIMIT 10 OFFSET 10;跑出来会发现第二页的 row_num 又是从 1 开始。原因是 MySQL 在执行带有 LIMIT 的语句时并不是先把所有行都赋值完再截断它在逻辑上可能先处理了前 10 行的变量累加然后再从第 11 行开始重新计算或者是整个执行计划导致变量状态不可控。总之直接在这种写法里依赖用户变量做跨页连续序号结果极不稳定。我在老版本上验证过的靠谱方案是嵌套一层子查询让变量赋值在子查询中完成外层再分页SELECT * FROM ( SELECT rownum : rownum 1 AS row_num, id, user_name, created_at FROM user_info CROSS JOIN (SELECT rownum : 0) r ORDER BY created_at DESC, id DESC ) tmp LIMIT 10 OFFSET 10;这样先算出全量带序号的结果再对外层做 LIMIT 截断第二页拿到的序号就是 11 到 20全局连续。但必须提醒你这种写法在老版本 MySQL 里的执行计划优化很迷有时候优化器会改变派生表的执行顺序导致变量累加出错。所以写完之后一定要用 EXPLAIN 确认再配合实际数据跑几遍特别是验证连续翻页时序号是否正确。我在 MySQL 5.6、5.7 上都碰到过只有亲自跑了才知道有没有问题的情况。3.3 用户变量方案必须注意的三个坑除了初始化用户变量方案还有几个典型的坑我一次说清楚。第一个坑是会话隔离。用户变量是会话级别的同一个数据库连接里定义了一次第二次执行时如果不重新初始化序号会接着上次的值继续累加。这就意味着你不能随便在一条查询里依赖“上次定义过的变量”每条 SQL 都要自己带上初始化交叉连接否则第二个查询的序号会从 N1 开始。第二个坑是赋值顺序不可依赖。MySQL 对 SELECT 子句中表达式的求值顺序并没有严格保证尤其是表里有多条记录时变量累加和排序的先后可能不符合你的直觉。比如你写了rownum : rownum 1 AS row_num同时还有prev : row_num这种依赖前一行的操作结果就可能乱套。尽量避免在同一个 SELECT 里对同一个变量做多次读取和赋值。第三个坑是兼容模式的“假稳定”。我遇到过一种情况一条查询用变量跑出来的序号看起来完全正常但换了一条执行路径比如加了 JOIN、改了 WHERE、改用了别的排序方式之后序号突然就乱了。原因是旧优化器在不同执行计划下对变量赋值的时机不同。所以用变量方案写完后最好把常见的几种查询变体都测一遍别只测一条路。4. 并列排名怎么做RANK 与 DENSE_RANK 的差异4.1 三种窗口排序函数对比在实际业务里“序号”还经常承担“排名”的功能比如绩效排名、销量排名。这时候就不能无脑用 ROW_NUMBER() 了因为它会把每个不同的行都分配一个唯一的连续编号哪怕两行数据完全一样也会分出第 2 名和第 3 名来。如果你的需求是“分数相同的人应该拿到相同名次”就得用 RANK() 或者 DENSE_RANK()。我用一组典型数据说明它们的差别学生分数ROW_NUMBER()RANK()DENSE_RANK()张三95111李四92222王五92322赵六88443钱七85554看到没有ROW_NUMBER() 是铁打的 1、2、3、4、5不看数据内容RANK() 遇到并列时会跳过下一个名次92 分两人并列第 2那么 88 分那个人就直接变成第 4DENSE_RANK() 则不会跳过88 分是第 3。4.2 业务里什么时候用 RANK 而不是 ROW_NUMBER我自己的选型经验是如果用户界面上的“名次”要体现并列关系用 DENSE_RANK() 或 RANK()如果只是为了给每一行一个唯一的位置标识用 ROW_NUMBER()。比如比赛排行榜并列的人应该显示相同名次而且如果两个第 1 名下一个人应该是第 3 名还是第 2 名体育比赛通常用 RANK()体现“后面名次被挤掉”的残酷感而如果你只想把不同分数段分等级比如分数相同的都是同一档用 DENSE_RANK() 更自然档位之间不会出现奇怪的空缺。SELECT student_name, score, RANK() OVER (ORDER BY score DESC) AS rank_num FROM exam_score ORDER BY score DESC;这个查询如果放在老版本 MySQL你得用两个用户变量来模拟 RANK 的逻辑一个变量记录上一行的分数另一个变量记录当前名次分数变化时名次才更新。写起来啰嗦不说还容易在并列行之间算错。所以我个人建议能升到 8.0 就升到 8.0窗口函数省下的不只是代码量更是维护成本。5. 按组编号的进阶玩法PARTITION BY 组合应用5.1 每个分组内重新从 1 开始编号“加序号”到了分组场景复杂度又上一个台阶。比如业务方想看“每个分类下销量前 10 的商品”这时候序号不能在全局范围内连续而是要在每个分类内部从 1 重新开始。窗口函数的 PARTITION BY 就是干这个的。SELECT ROW_NUMBER() OVER (PARTITION BY category_id ORDER BY sales_amount DESC, id DESC) AS rank_num, product_id, product_name, category_id, sales_amount FROM product_sales;这段 SQL 的逻辑是先把结果集按照category_id分成若干个组然后在每个组内部独立执行ORDER BY sales_amount DESC并编号。所以你可以看到第一个分类的序号是 1、2、3第二个分类的序号又会从 1、2、3 开始。这个能力在“班级排名”“部门预算排名”“商品分类销量排名”这类需求里几乎是刚需。老版本 MySQL 想实现分组内编号需要同时控制两个用户变量一个变量记录当前分组的值另外一个变量记录组内的序号每当分组值变化时就把序号重置为 1。逻辑比较复杂很容易出错。5.2 分组 TopN 的两种写法有了分组内编号提取“每组前 N 条”就成了顺手的事。最标准的写法是把带编号的查询放进子查询或者 CTE然后在外层过滤rank_num NSELECT * FROM ( SELECT ROW_NUMBER() OVER (PARTITION BY category_id ORDER BY sales_amount DESC, id DESC) AS rank_num, product_id, product_name, category_id, sales_amount FROM product_sales ) t WHERE t.rank_num 3;这里有个细节PARTITION BY 后面的分组字段和 WHERE 条件里用来筛选的字段不要搞混。如果你的 WHERE 先过滤了某些分类那么 PARTITION BY 分组时只会在过滤后的数据上分组结果可能和业务预期不一致。比如你想看全部分类的前 3就不要提前在子查询里加category_id 某值加了之后其他分类的数据就没了。老版本 MySQL 做分组 TopN 一般用“自连接 分组计数”的方式逻辑上是先找出每个分类内大于当前行销量的商品数如果这个数小于 3说明当前行排在该分类前 3。这种写法在大数据量下性能惨不忍睹因为每一行都要做一次整组计数。如果你维护的老系统里还有这种写法建议找机会替换掉。6. 实战中常见的四个坑与排查思路6.1 序号跳号和排序不稳定我遇到最频繁的问题是同一个查询同一批数据第一次跑序号 1、2、3、4、5第二次跑变成 1、2、3、5、6中间跳了一个。出现这种问题原因基本都指向 ORDER BY 字段不唯一。我的排查步骤很简单——先在 OVER 的 ORDER BY 里补一个主键比如id DESC然后重新执行几次 SQL观察序号是否稳定。如果加了主键之后依旧不稳定那就要检查是不是在多层子查询里外层排序改变了内层窗口函数的执行上下文。窗口函数内的 ORDER BY 和最终展示的排序发生冲突时会导致逻辑混乱。我的习惯是能在一个查询里写清楚的窗口逻辑尽量不要嵌套第三层以上层数越多越难排查。6.2 分页时序号不连续分页场景里用户经常会在第二页发现序号又变成了 1、2、3……这时候首先要判断业务上到底需要什么样的序号如果只是“当前页内序号”那 1、2、3 没有任何问题前端随便算如果需要“全局连续序号”那分页必须在带完整序号的结果上进行也就是先用窗口函数或者嵌套变量生成完整序列再 LIMIT 截取。我见到的很多“序号不连续”的投诉其实是对需求没对齐。先问清楚业务方要的是全局连续还是页内连续再决定方案能省去大量无效沟通。6.3 变量方案在并发查询下的错乱用户变量是会话级别的理论上不同会话之间互不影响。但如果你用连接池一条连接被复用后之前会话里遗留下来的变量值可能还在。尤其是老版本 MySQL 里连接复用时不会自动清空用户变量导致同一个查询在几次请求中跑到不同的初始值上序号忽大忽小。解决方法有两个一是每次查询都带上CROSS JOIN (SELECT rownum : 0) r重新初始化二是尽量别在老版本上依赖用户变量做复杂序号计算能升级就升级不能升级就把序号逻辑挪到应用层。6.4 导出场景下序号列的最终呈现导出 Excel 时还有一个隐蔽的坑SQL 里生成好 row_num 之后如果后面还有程序侧二次排序、二次加工序号列可能会被当成普通字段一起排乱。我做过一个项目运维同事把 SQL 查询结果导成 CSV然后用 Excel 打开后顺手按某一列排序发现序号全乱了。这其实不是 SQL 问题而是工具行为。我的处理方式是在导出脚本里明确告诉同事序号列是导出的定位标识不要参与二次排序更好的做法是导出时把序号放在第一列并把它设为纯文本格式防止 Excel 把数字当成可计算数据避免在筛选和排序时产生额外干扰。一点个人体会我这两年实际跑下来给查询数据加序号这件事最核心的教训就一句话先搞清楚需求和版本再选方案。MySQL 8.0 能用窗口函数就用窗口函数别在老版本上硬折腾如果实在要用用户变量一定把初始化、执行顺序、会话隔离这些细节全部验证到位。尤其是排序字段一定要加一个唯一性十足的兜底字段让你的序号经得起反复查询和跨页验证。最后再分享一个我个人偏爱的习惯就是在所有报表和数据导出类的 SQL 里把序号列放在第一个字段并在注释里写清楚它是由哪个字段、以什么顺序生成的。这样同事接手维护时不需要再把整段 SQL 读一遍才能理解序号的含义。毕竟一段清晰到能让别人快速看懂的 SQL才是真正省时间的 SQL。

相关新闻

森林害虫目标检测数据集实战:YOLOv8训练与避坑指南

森林害虫目标检测数据集实战:YOLOv8训练与避坑指南

简介:这份森林害虫目标检测数据集面向林业智能监测、农业AI应用开发及生态科研人员,聚焦松毛虫、松墨天牛、卷叶蛾三类常见且危害严重的森林害虫识别难题。数据集共1715张实际场景采集的JPEG图片,按训练集1199张、验证集257张、测试集259张划…

2026/10/11 22:27:17 阅读更多 →
BNF与EBNF详解:从语法规则到解析器实战

BNF与EBNF详解:从语法规则到解析器实战

看到“BNF、巴科斯-诺尔范式”这个标题,很多刚接触编译原理的人第一反应是:又一个高大上的数学符号体系。但说句实在话,BNF 是我在编译原理里见过的最接地气的工具之一。它本质上就干了一件事——用一套严格、无歧义的规则,告诉计…

2026/10/11 22:26:15 阅读更多 →
BNF语法全解:从巴科斯-诺尔范式到递归下降解析器

BNF语法全解:从巴科斯-诺尔范式到递归下降解析器

读编译器相关的技术文档时&#xff0c;你大概率见过这样的段落&#xff1a;一行行规则&#xff0c;左侧是尖括号包着的“<expr>”这种名字&#xff0c;中间是“::”&#xff0c;右侧是一串终结符、竖线和递归引用。这套记号就是编译原理里经常提到的BNF&#xff0c;全称巴…

2026/10/11 22:26:15 阅读更多 →

最新新闻

Vibe Coding 的边界:从“70% 问题“到“80% 墙“,AI 编程五大局限性与人机分工深度解析

Vibe Coding 的边界:从“70% 问题“到“80% 墙“,AI 编程五大局限性与人机分工深度解析

文档教程Vibe Coding示例工程 【免费下载链接】vibe-vibe The First Systematic Vibe Coding Open-Source Tutorial | From Zero to Full-Stack, Empowering Everyone to Build Products with AI | Live at: www.vibevibe.cn &#xff1b;首个系统化 Vibe Coding 开源教程 | 零…

2026/10/12 0:53:26 阅读更多 →
不用模拟器也能玩PS5游戏?拆解AnyPS5的“非模拟器魔法“:relinker重链接+PRX库+RDNA到SPIR-V

不用模拟器也能玩PS5游戏?拆解AnyPS5的“非模拟器魔法“:relinker重链接+PRX库+RDNA到SPIR-V

不用模拟器也能玩PS5游戏&#xff1f;拆解AnyPS5的"非模拟器魔法"&#xff1a;relinker重链接PRX库RDNA到SPIR-V 【免费下载链接】AnyPS5 Tool for automatic PS5 executables porting to Linux and Windows 项目地址: https://gitcode.com/GitHub_Trending/an/Any…

2026/10/12 0:53:26 阅读更多 →
基于A星算法的无人机三维路径规划Matlab实现与优化

基于A星算法的无人机三维路径规划Matlab实现与优化

做无人机的人基本都绕不开路径规划这道坎。“基于A星算法的无人机三维路径规划算法研究&#xff08;Matlab代码实现&#xff09;” 这个题目看着规整&#xff0c;但真正落地的时候&#xff0c;坑比想象的多&#xff1a;地图怎么建、邻居节点怎么扩展、启发函数怎么写才能既快又…

2026/10/12 0:51:25 阅读更多 →
VS Code 中直接使用 Codex 教程及连接失败解决方案:TaoToken 统一 Key 接入与排错实录

VS Code 中直接使用 Codex 教程及连接失败解决方案: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/12 0:50:24 阅读更多 →
企业 Agent 提示词注入防御实战:双重护栏与对抗语义检测

企业 Agent 提示词注入防御实战:双重护栏与对抗语义检测

在企业将多智能体&#xff08;Multi-Agent&#xff09;系统接入客服咨询、内部知识检索或自动化办公流后&#xff0c;安全攻防的对抗维度发生了一场根本性范式转移&#xff1a;传统的 SQL 注入或跨站脚本攻击&#xff08;XSS&#xff09;正在退居二线&#xff0c;而以自然语言为…

2026/10/12 0:47:23 阅读更多 →
Cursor怎么使用:3分钟上手Cursor键盘快捷键速查,用TaoToken统一Key接入GPT4与Claude 3.5辅助编程

Cursor怎么使用:3分钟上手Cursor键盘快捷键速查,用TaoToken统一Key接入GPT4与Claude 3.5辅助编程

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

2026/10/12 0:46:23 阅读更多 →

日新闻

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

在数码相机、高清显示屏与现代矢量图形技术高度发达的今天&#xff0c;画面可以做到绝对的锐利、平滑与无瑕。然而&#xff0c;当一张秋日手账插画或拍立得照片过于“平整无瑕”时&#xff0c;往往会散发出一种冰冷生硬的“数码塑料感&#xff08;Digital Plasticity&#xff0…

2026/10/12 0:00:59 阅读更多 →
活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

在现代网页与移动端设计中&#xff0c;横排&#xff08;Horizontal Layout&#xff09;早已经成为了绝对的主流。然而&#xff0c;当我们翻开泛黄的线装古籍、宋版木刻诗集&#xff0c;或是欣赏一张茶道雅集的手写便签时&#xff0c;那种**自上而下纵向书写、自右向左逐列铺展&…

2026/10/12 0:00:59 阅读更多 →
周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

每到周日的晚上八点到十点&#xff0c;很多人心里都会悄悄亮起一盏警示灯。 在心理学上&#xff0c;这种现象有一个专门的称谓——“周日夜晚焦虑症&#xff08;Sunday Scaries&#xff09;”。明天又是周一&#xff0c;闹钟又要重新在七点响彻卧房&#xff1b;脑海里仿佛有一个…

2026/10/12 0:00:59 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介&#xff1a;基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码&#xff0c;面向计算机相关专业课程设计与期末大作业学生&#xff0c;以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程&#xff0c;…

2026/10/12 0:16:30 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程&#xff1a;键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化&#xff0c;十个新手有八个栽在"往输入框里填东西"这件事上&#xff1a;要么填不进去&#xff0c;要么填了一半&#xff0c;要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程&#xff1a;阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀&#xff1a;什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面&#xff0c;跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/12 0:16:43 阅读更多 →

月新闻

我发现了一个新思路:用 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/11 10:45:37 阅读更多 →
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/11 14:36:53 阅读更多 →
黑夜航拍船只数据集训练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/11 14:36:54 阅读更多 →