
文档教程知识库【免费下载链接】til:memo: Today I Learned项目地址https://gitcode.com/gh_mirrors/ti/til点击查看免费下载在psql交互式会话中执行任意查询PostgreSQL 都会为这次查询关联一个「行数」row count结果——SELECT 返回了多少行、INSERT 写入了多少行都会在结果集下方以(19 rows)或INSERT 0 3的形式呈现。但当查询输出过长、被分页器接管或你想在后续命令中引用这个数字时肉眼记录往往不可靠。本文以 postgres/get-row-count-for-most-recent-query.md 为主线完整讲解psql内置变量:ROW_COUNT的用法它始终保存「最近一次查询」影响的行数可通过\echo随时打印无需重新执行查询即可获得该值。认识 psql 的行数输出每当你在psql中执行一条 SQL 语句交互式界面都会在结果下方给出本次操作的行数信息。对于select查询它表现为类似(19 rows)的计数行紧跟在结果集下方对于insert、update、delete等写操作则会以INSERT 0 3这样的命令标签形式报告受影响的行数其中最后一个数字即行数。这一信息由psql客户端在每次命令执行后计算并显示是确认语句实际效果最直接的反馈。使用内置变量 :ROW_COUNT 读取行数psql提供了一组预定义变量built-in variables其中:ROW_COUNT专门保存最近一次查询返回或影响的行数。该变量在每次命令执行后都会被更新因此你可以在任意时刻引用它而无需重新运行那条查询。最常用的读取方式是通过\echo元命令把它打印出来 select generate_series(2,20); generate_series ----------------- 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 (19 rows) Time: 12.338 ms \echo :ROW_COUNT 19这里generate_series(2,20)生成了从 2 到 20 共 19 个连续整数psql在结果集下方打印(19 rows)紧接着执行\echo :ROW_COUNT变量展开后输出19与肉眼看到的计数完全一致。需要说明的是:ROW_COUNT是psql客户端层面的会话内变量只在当前交互式会话中有效每执行一条新命令它的值就会被覆盖为最新一条命令的行数。因此它记录的是「最近一次查询」的结果若需要保留多个行数应在命令执行后立即读取。分页器场景下的行数引用当查询返回大量数据时psql会默认启用分页器pager例如less来展示输出。分页器接管后一旦退出分页器屏幕上的结果与(1999 rows)这样的计数行往往已被清屏肉眼无法再回溯行数。此时:ROW_COUNT的价值就体现出来——不必重新执行查询直接引用变量即可拿到行数 select generate_series(2,2000); Time: 9.815 ms \echo :ROW_COUNT 1999注意第二个示例中查询返回了 1999 行从 2 到 2000由于输出进入了分页器结果集本身并未显示在终端里但\echo :ROW_COUNT依然准确输出1999。这正是该变量最实用的场景无论结果是否被分页、是否已经滚屏行数始终保存在会话变量中。关于分页器的行为可以在会话内通过\pset pager on|off显式开关相关内容可参考仓库中的 toggling-the-pager-in-psql.md。如果你希望每次启动psql时统一控制这类显示行为也可以在~/.psqlrc配置文件中集中设置参见 use-a-psqlrc-file-for-common-settings.md。写操作同样提供行数行数信息并不局限于select。对于insert、update、delete等写语句:ROW_COUNT同样会记录受影响的行数。例如一次插入多行的语句 insert into users (id) values (50001), (50002), (50003); INSERT 0 3 Time: 2.804 ms \echo :ROW_COUNT 3psql输出的命令标签INSERT 0 3中最后的3表示成功插入 3 行随后\echo :ROW_COUNT也输出3两者一致。这意味着你可以用它来校验批量写入、判断update/delete实际影响的行数或在此基础上编写条件逻辑例如配合\if根据行数分支处理让交互式运维与数据校验更加可靠。小结每次在psql中执行命令后:ROW_COUNT都会保存最近一次查询的行数可通过\echo :ROW_COUNT随时读取。输出被分页器如less接管、屏幕内容清空后仍可借助该变量在不重跑查询的前提下拿到行数。该变量同样适用于insert、update、delete等写操作其值与命令标签中的行数一致。它是会话级变量执行下一条命令后即被覆盖需要时应在执行后立即引用。原文出处postgres/get-row-count-for-most-recent-query.md其引用的示例来自 PostgreSQL 社区关于高级 psql 用法的资料。赞分享文档教程知识库【免费下载链接】til:memo: Today I Learned项目地址https://gitcode.com/gh_mirrors/ti/til点击查看免费下载相关推荐CC Switch 本地路由实战让 Codex 经 Anthropic Messages 上游跑通 Claude 模型CC Switch 本地路由实战让 Codex 经 Anthropic Messages 上游跑通 Claude 模型 本文适配 CC Switch 3.17AI 应用开发者工具桌面应用CLI-Anything7步终极指南让任何GUI软件变身智能代理原生工具CLI Anything7步终极指南让任何GUI软件变身智能代理原生工具 你是否曾为那些只有GUI界面的软件感到困扰想要自动化Blender建模、批量处理人工智能AI AgentAI 技能工具调用CLICURLINFO_PRIMARY_PORT在 libcurl 中获取最近一次连接的真实目标端口CURLINFO_PRIMARY_PORT在 libcurl 中获取最近一次连接的真实目标端口 CURLINFO_PRIMARY_PORT 是 libcurlCLI网络通信创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考