第4节-排序和限制-FETCH

摘要: 在本教程中,你将学习如何使用 PostgreSQLFETCH 子句从查询中检索部分行。

PostgreSQL FETCH 简介

PostgreSQL 中,OFFSET 子句的作用类似于 LIMIT 子句。FETCH 子句允许你限制查询返回的行数。

LIMIT 子句并非 SQL 标准的一部分。不过,FETCH 子句是 SQL:2008 标准的一部分。如果您希望您的应用程序在未来支持其他数据库,请使用 FETCH 而非 LIMIT ,因为其他数据库供应商很可能会支持它。

以下是 OFFSET FETCH 子句的语法:

SELECT column1, column2
FROM table_name
ORDER BY sort_expression
OFFSET skip_count
FETCH { FIRST | NEXT } ] [row_count] {ROW | ROWS } ONLY;

在此语法中:

首先,在 FROM 子句中指定你想要检索数据的表的名称。

其次,在 SELECT 子句中限制最终结果集中要包含的行中的哪些列。

第三,使用 ORDER BY 子句按一列或多列中的值对行进行排序。

第四,在 FETCH 子句返回行的子集之前,在 OFFSET 子句中提供要跳过的行数:

OFFSET skip_count

skip_count 用于确定要跳过的行数。它可以是零或正整数。如果 skip_count 为零,查询将不会跳过任何行。

OFFSET 子句是可选的。如果省略该子句,查询也不会跳过任何行。

第五,在 FETCH 子句中设置要返回的行数 (row_count)

row_count 的默认值为 1,这意味着如果省略它,FETCH 将从查询中返回一行数据。

你可以交替使用 FIRSTNEXTROW 以及 ROWS ,因为它们是同义词。

例如:

FETCH FIRST 1 ROW ONLY;
FETCH FIRST ROW ONLY;
FETCH FIRST 10 ROWS ONLY;
FETCH NEXT 1 ROW ONLY;
FETCH NEXT ROW ONLY;
FETCH NEXT 10 ROWS ONLY;

设置示例表

我们将使用在 LIMIT 教程中创建的 products 表来练习 FETCH 子句。

以下是创建 products 表并插入一些行的SQL脚本。

CREATE TABLE products (product_id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,name VARCHAR(255) NOT NULL,price DECIMAL(10, 2)
);INSERT INTOproducts (name, price)
VALUES('iPhone 16 Pro Max', 1649.00),('iPhone 16', 829.00),('Galaxy S24 Ultra', 1299.99),('Galaxy S24 FE', 949.99),('Pixel 9 Pro', 799.00),('Pixel 8a', 399.00),('OnePlus 12', 745.00),('OnePlus Open', 1514.99),('Galaxy Z Fold 6', 2019.99);
product_idnameprice
1iPhone 16 Pro Max1649.00
2iPhone 16829.00
3Galaxy S24 Ultra1299.99
4Galaxy S24 FE949.99
5Pixel 9 Pro799.00
6Pixel 8a399.00
7OnePlus 12745.00
8OnePlus Open1514.99
9Galaxy Z Fold 62019.99

获取第一行

以下语句使用 FETCH 子句从 products 表中查询最昂贵的产品:

SELECTname,price
FROMproducts
ORDER BYprice DESC
FETCH FIRST ROW ONLY;

输出:

      name       |  price
-----------------+---------Galaxy Z Fold 6 | 2019.99

获取一些行

以下示例使用 FETCH 子句从 products 表中检索价格最高的三种产品:

SELECTname,price
FROMproducts
ORDER BYprice DESC
FETCH FIRST 3 ROWS ONLY;

输出:

       name        |  price
-------------------+---------Galaxy Z Fold 6   | 2019.99iPhone 16 Pro Max | 1649.00OnePlus Open      | 1514.99

在获取之前跳过一些行

以下语句使用 OFFSETFETCH 子句从 products 表中获取第二贵的产品:

SELECTname,price
FROMproducts
ORDER BYprice DESC
OFFSET 1
FETCH NEXT 1 ROW ONLY;

输出:

       name        |  price
-------------------+---------iPhone 16 Pro Max | 1649.00

使用 PostgreSQLFETCH 子句进行分页

FETCH 子句有助于实现分页:

OFFSET record_per_page * (page_no - 1)
FETCH NEXT record_per_page ROWS ONLY.

在此语法中:

  • record_per_page 是每页的记录数量。
  • page_no 是页码,例如 1、2、3

假设你希望每页显示3个产品 (record_per_page) ,并想获取第2页的产品 (page_no),你可以使用以下查询:

SELECTname,price
FROMproducts
ORDER BYprice DESC
OFFSET 3 * (2 - 1)
FETCH NEXT 3 ROW ONLY;

输出:

       name       |  price
------------------+---------Galaxy S24 Ultra | 1299.99Galaxy S24 FE    |  949.99iPhone 16        |  829.00

总结

  • 使用 PostgreSQLFETCH 从查询中返回部分行。
  • 使用 OFFSET FETCH 在返回部分行之前跳过一些行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/922020.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/922020.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

洛谷 P2680 [NOIP 2015 提高组] 运输计划(二分答案 + 树上差分)

题目链接题目概括与评价 很经典&#xff0c;突破口藏的很深&#xff0c;求最小值这里&#xff0c;是问题切入点&#xff0c;想到用二分答案&#xff0c;然后思考怎么写 f_check 函数。二分答案树上差分。代码 #include <iostream> #include <vector> #include <…

接力邓承浩,姜海荣能讲好深蓝汽车新故事吗?

出品 | 何玺排版 | 叶媛深蓝汽车迎来新话事人。9月5日&#xff0c;新央企长安汽车旗下品牌深蓝汽车传出新的人事调整。多家业内媒体报道称&#xff0c;荣耀前中国区CMO姜海荣已正式加入长安汽车&#xff0c;并出任旗下深蓝汽车CEO一职。原CEO邓承浩则升任深蓝汽车董事长&#x…

esp32-c3写一个收集附近 WiFi 和蓝牙信号通过

下面给你一个基于 ESP-IDF(v5.x) 的完整示例&#xff1a;在 ESP32-C3 上同时扫描附近 Wi-Fi 与蓝牙&#xff08;BLE&#xff09;广播&#xff0c;把结果以 JSON 结构统一输出到串口&#xff0c;并且可可选通过 MQTT 上报到服务器&#xff08;打开一个宏即可&#xff09;。日志默…

文心大模型 X1.1:百度交出的“新深度思考”答卷

文心大模型 X1.1&#xff1a;百度交出的“新深度思考”答卷 2025年9月9日&#xff0c;WAVE SUMMIT 2025深度学习开发者大会在北京正式召开&#xff0c;由深度学习技术及应用国家工程研究中心主办&#xff0c;百度飞桨与文心大模型联合承办。大会上&#xff0c;百度正式发布了基…

开始 ComfyUI 的 AI 绘图之旅-Flux.1图生图(八)

文章标题一、Flux Kontext Dev1.关于 FLUX.1 Kontext Dev1.1 版本说明1.2 工作流说明1.3 模型下载2.Flux.1 Kontext Dev 工作流2.1 工作流及输入图片下载2.2 按步骤完成工作流的运行3.Flux Kontext 提示词技巧3.1 基础修改3.2 风格转换3.3 角色一致性3.4 文本编辑4.常见问题解决…

Java 生成微信小程序二维码

1. java 二维码生成工具类import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONObject; import com.pdatao.api.controller.file.FileController; import com.pdatao.api.error.CommunityException; import org.apache.commons.io.IOUtils; import org.springframe…

智慧健康触手可及:AI健康小屋——未来健康管理的全能守护者

AI健康小屋&#xff0c;这座融合人工智能、物联网与医疗科技的“健康堡垒”&#xff0c;正悄然重构健康管理生态。它以科技为引擎&#xff0c;将专业医疗资源下沉至社区、企业、家庭&#xff0c;通过智能检测、精准分析、个性化干预&#xff0c;实现从疾病治疗到主动预防的健康…

[工作表控件19] 验证规则实战:如何用正则表达式规范业务输入?

在企业应用中,数据准确性至关重要。工作表控件通过“验证规则”能力,支持在文本字段和附件字段中使用正则表达式(RegEx)进行格式校验。它能帮助开发者轻松实现邮箱、身份证号、车牌号、URL 等格式的高效验证,大幅提升数据质量与表单使用体验。 一、官方功能介绍与基础能力…

uniapp分包实现

关于分包优化的说明 在对应平台的配置下添加"optimization":{"subPackages":true}开启分包优化 目前只支持mp-weixin、mp-qq、mp-baidu、mp-toutiao、mp-kuaishou的分包优化 分包优化具体逻辑&#xff1a; 静态文件&#xff1a;分包下支持 static 等静态…

ctfshow_web14------(PHP+switch case 穿透+SQL注入+文件读取)

题目&#xff1a;解释&#xff1a;$c intval($_GET[c]); //获取整数值 6sleep($c);//延迟执行当前脚本若干秒。提示一下哈没有break会接着执行下面的但是像是44444&#xff0c;555555,sleep的时间太久我们用3进入here_1s_your_f1ag.php是一个查询页面&#xff0c;sql注入查看源…

linux x86_64中打包qt

下载安装 地址: Releases linuxdeploy/linuxdeploy mv linuxdeploy-x86_64.AppImage linuxdeployqtchmod 777 linuxdeployqtsudo mv linuxdeployqt /usr/local/bin/linuxdeployqt --version报错 Applmage默认依赖FUSE&#xff0c;需要挂载自身为虚拟文件系统才能运行, ubuntu…

华为昇腾CANN开发实战:算子自定义与模型压缩技术指南

点击 “AladdinEdu&#xff0c;同学们用得起的【H卡】算力平台”&#xff0c;注册即送-H卡级别算力&#xff0c;80G大显存&#xff0c;按量计费&#xff0c;灵活弹性&#xff0c;顶级配置&#xff0c;学生更享专属优惠。 摘要 随着人工智能技术的飞速发展&#xff0c;越来越多…

Vue3源码reactivity响应式篇之reactive响应式对象的track与trigger

概览 在BaseReactiveHandler类的get方法中&#xff0c;有如下代码块if (!isReadonly2){track(target, "get", key);}&#xff0c;这表示通过reactive、shallowReactive创建的响应式对象&#xff0c;非只读的&#xff0c;当读取代理对象proxyTarget的某个属性key时&am…

VRRP 多节点工作原理

VRRP 多节点工作原理 基本概念 VRRP 的设计初衷是给一组节点提供一个 虚拟路由器&#xff0c;对外只表现出一个 VIP。协议规定&#xff1a;同一个 VRRP 实例 下始终只有 一个 Master 持有 VIP&#xff0c;其它全部是 Backup。 Master → 持有 VIP&#xff0c;负责转发流量到Mas…

Gradio全解11——Streaming:流式传输的视频应用(9)——使用FastRTC+Gemini创建沉浸式音频+视频的艺术评论家

Gradio全解11——Streaming&#xff1a;流式传输的视频应用&#xff08;9&#xff09;——使用FastRTCGemini创建沉浸式音频视频的艺术评论家11.9 使用FastRTCGemini创建实时沉浸式音频视频的艺术评论家11.9.1 准备工作及音频图像编码器1. 项目说明及准备工作2. 音频和图像编码…

Django入门笔记

Python知识点&#xff1a;函数、面向对象。前端开发&#xff1a;HTML、CSS、JavaScript、jQuery、BootStrap。MySQL数据库。Python的Web框架&#xff1a;Flask&#xff0c;自身短小精悍 第三方组件。Django&#xff0c;内部已集成了很多组件 第三方组件。【主要】1.安装djang…

当Claude Code失灵,Qwen Code能否成为你的救星?

当Claude Code失灵&#xff0c;Qwen Code能否成为你的救星&#xff1f; 一、开头&#xff1a;点明困境&#xff0c;引出主角 作为一个大模型博主&#xff0c;日常工作中我经常会使用各种 AI 工具来提高效率&#xff0c;Claude Code 就是我之前非常依赖的一款代码生成助手 。它…

Go语言快速入门教程(JAVA转go)——1 概述

优势 第一个理由&#xff1a;对初学者足够友善&#xff0c;能够快速上手。 业界都公认&#xff1a;Go 是一种非常简单的语言。Go 的设计者们在发布 Go 1.0 版本和兼容性规范后&#xff0c;似乎就把主要精力放在精心打磨 Go 的实现、改进语言周边工具链&#xff0c;还有提升 Go …

【Rust多进程】征服CPU的艺术:Rust多进程实战指南

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

OpenCV 高阶实战:图像直方图与掩码图像深度解析

目录 一、图像直方图&#xff1a;读懂图像的 “像素分布报告” 1. 什么是图像直方图&#xff1f; 2. 图像直方图的核心作用 &#xff08;1&#xff09;分析亮度分布 &#xff08;2&#xff09;判断对比度高低 &#xff08;3&#xff09;辅助图像增强与阈值分割 &#xf…