psql 中获取最近一次查询的行数:借助 :ROW_COUNT 变量

发布时间:2026/10/8 8:38:23

psql 中获取最近一次查询的行数:借助 :ROW_COUNT 变量 文档教程知识库【免费下载链接】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),仅供参考
延伸阅读

更多相关文章

2026/10/8 8:38:23

Hyperframes超多帧堆栈合成实战:从原理、参数到后期流程全解析

1. 从一张动图说起:为什么我非要研究 hyperframes先交代一下背景,我最早注意到 hyperframes,是因为一张天文摄影论坛里的动图。画面里的星空不是一颗一颗的星点,而是一大团一大团高速旋转的星流迹,颜色艳丽、轨迹完整&…

2026/10/8 8:33:21

C++ 实现读写锁的代码详解

前言读写锁(reader-writer lock)要解决的是一类很常见的并发矛盾:共享数据被读的次数远远多于 被写的次数。用普通的 std::mutex,两个读者明明互不干扰,却必须排队,白白浪费了并行度; 而用读写锁…

2026/10/8 17:17:07

上下文管理实战:Context-Mode在大模型应用中的设计与实现

Context-Mode这个词,这两年做AI应用的人应该不陌生。我在自己的几个项目里反复折腾过上下文管理,一开始是把所有对话记录一股脑塞给模型,结果token爆表、回复跑偏、成本还高得离谱。后来才慢慢摸清楚,所谓context-mode&#xff0c…

2026/10/8 17:17:07

大模型上下文管理实战:全量、滑动窗口、锚定与摘要压缩模式

做AI应用开发这些年,我踩过最深的坑就是上下文管理。很多人把 "context-mode" 当成一个简单的参数开关,觉得把历史对话一股脑丢给模型就完事了。结果对话一长,模型要么开始胡言乱语,要么把最关键的约束条件忘得一干二净…

2026/10/8 17:12:06

Superpowers增强方案:从设计思路到实操避坑的完整指南

1. 从“superpowers”这个标题说起:它到底是什么第一次看到“superpowers”这个词,很多人脑子里蹦出来的可能是漫威电影里的超能力,或者是某些游戏里的技能系统。但如果你是在技术社区、开源项目或者工具链的语境下看到它,那它大概…

2026/10/8 10:03:18

Jev+Agent接管浏览器:browser-use实战与jev-ultrafast性能优化

1. 从“Jev”说起:为什么我要把Agent接进浏览器“Jev”这个词最近在圈子里出现的频率越来越高,很多人第一次听到会以为是某个新模型的名字,其实它更像是一种思路——把Jev模型的能力当作底座,通过Agent的方式去接管浏览器&#xf…

2026/10/8 10:03:20

多智能体集群实战:DeepAgents编排、MCP与A2A协议及Skills体系

1. 从"单兵作战"到"集群协同":多智能体编排到底在解决什么问题如果你最近在折腾 Agent 相关的东西,大概率会有一种感觉:单个 Agent 能做的事情,其实很快就摸到天花板了。你给它一个提示词,挂几个工…

2026/10/8 6:05:44

无源低通滤波器设计实战:从RC到LC,手把手教你避开那些坑

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

2026/10/8 0:02:17

自然数立方等于连续奇数之和:从证明到编程验证

十几年来我一直游走在数学科普和编程教学这两块内容之间,对“看起来像魔法、拆开全是数学”的结论总是格外敏感。最近翻资料时又撞见一句话:任何一个自然数 m 的立方,都可以写成 m 个连续奇数之和。2 的立方等于 3 加 5,3 的立方等…

2026/10/8 0:02:17

C#上位机SSH连接实战:用SSH.NET补齐超时、批量与密钥认证

简介:这是一份基于 C# 开发的 SSH 连接功能半成品工程,原本作为另一个主项目的子功能模块,现独立打包分享。工程采用 WinForms 界面,包含源码、解决方案、安装部署工程、NuGet 依赖包及说明文档,适合正在做远程连接、网…

2026/10/8 0:02:17

Java SpringBoot一体化智能售后系统设计与实现全解析

毕业设计年年做,Java Web 方向的题目翻来覆去就那么几个,但“一体化智能售后系统”这个题,每次看到我都觉得值得认真聊一聊。它不是一个简单 curd 堆出来的管理系统,而是把客户、工单、派单、处理、回访、统计整条链路串起来的一套…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑