摘要:在本教程中,您将学习如何使用 PostgreSQLWHERE 子句来筛选表中的行。

PostgreSQL WHERE 子句

SELECT FROM 语句从表中所有行的一个或多个列中查询数据。实际上,你经常需要选择满足某个条件的行。

要根据条件从表中筛选行,需在 SELECT 语句中使用 WHERE 子句:

SELECT column1, column2, ...
FROM table_name
WHERE condition;

执行该语句时,PostgreSQL 会先计算 FROM 子句,然后计算 WHERE 子句,最后计算 SELECT 子句:

  • 首先,通过执行 FROM 子句检索 table_name 中的每一行。
  • 其次,评估 WHERE 子句中的 condition ,如果 condition 为真,则将该行包含在结果集中。
  • 第三,从选中的行中选择 SELECT 子句中指定的列。

如果 table_name 中没有行满足 condition ,则SELECT语句会返回一个空集,其中不包含任何行。

PostgreSQL WHERE 子句示例

假设我们有如下的 inventories 表:

CREATE TABLE inventories (name VARCHAR(255),brand VARCHAR(50),quantity INT,price DECIMAL(19, 2)
);INSERT INTO inventories (name, brand, quantity, price)
VALUES ('iPhone 14 Pro', 'Apple', 10, 999.99),('Galaxy S23 Ultra', 'Samsung', 15, 1199.99),('Pixel 7 Pro', 'Google', 8, 899.99),('Xperia 1 IV', 'Sony', 7, 1299.99);

以下语句使用 WHERE 子句来检索数量大于9的产品:

SELECT name, quantity
FROM inventories
WHERE quantity > 9;

输出:

       name       | quantity
------------------+----------iPhone 14 Pro    |       10Galaxy S23 Ultra |       15

它的工作原理。

首先,FROM 子句从 inventories 表中选取所有行:

       name       |  brand  | quantity |  price
------------------+---------+----------+---------iPhone 14 Pro    | Apple   |       10 |  999.99Galaxy S23 Ultra | Samsung |       15 | 1199.99Pixel 7 Pro      | Google  |        8 |  899.99Xperia 1 IV      | Sony    |        7 | 1299.99

其次,WHERE 子句计算库存表中的每一行,检查数量是否大于 10,并将中间结果集中的行包括在内:

       name       |  brand  | quantity |  price
------------------+---------+----------+---------iPhone 14 Pro    | Apple   |       10 |  999.99Galaxy S23 Ultra | Samsung |       15 | 1199.99

它返回两行,数量分别为10和15。

第三, SELECT 子句从 namequantity 列中查询数据:

       name       | quantity
------------------+----------iPhone 14 Pro    |       10Galaxy S23 Ultra |       15

比较运算符

除了大于运算符 > 之外,你还可以在 WHERE 子句中使用其他比较运算符:

OperatorMeaning
=Equal to
!= (<>)Not Equal To
>Greater than
>=Greater than or equal to
<Less than
<=Less than or equal to

等于运算符 (=)

如果两个值相等,相等运算符返回true。

例如,以下语句在WHERE子句中使用等于运算符 (=)来查询 inventories 中数量等于10的产品:

SELECT name, quantity
FROM inventories
WHERE quantity = 10;

输出:

     name      | quantity
---------------+----------iPhone 14 Pro |       10

该查询返回 iPhone 14 Pro ,因为只有该产品的数量为10。

不等于运算符(!=)

以下语句使用不等运算符 (!=)inventories 表中查询数量不等于10的产品:

SELECT name, quantity
FROM inventories
WHERE quantity != 10;

输出:

       name       | quantity
------------------+----------Galaxy S23 Ultra |       15Pixel 7 Pro      |        8Xperia 1 IV      |        7

请注意,PostgreSQL 也使用 <> 作为不等于运算符,因此你可以交替使用 !=<> 运算符。

WHERE 子句和列别名

由于 PostgreSQL 先计算 WHERE 子句,再计算 SELECT 子句,因此在计算 WHERE 子句时,列别名不可用。

以下语句尝试在 WHERE 中使用 amount 列别名,结果导致错误:

SELECTname,quantity * price AS amount
FROMinventories
WHEREamount > 10000;

错误:

column "amount" does not exist

输出表明 amount 列不存在。要修复此错误,您需要按如下方式在 WHERE 子句中使用该表达式:

SELECTname,quantity * price AS amount
FROMinventories
WHEREquantity * price > 10000;

输出:

       name       |  amount
------------------+----------Galaxy S23 Ultra | 17999.85

总结

  • 使用 WHERE 子句根据条件从表中筛选行。
  • PostgreSQLFROM 子句之后、SELECT 子句之前对 WHERE 子句进行求值。

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

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

相关文章

IACheck赋能AI环评报告审核,推动环保设备制造行业发展

在“双碳目标”和绿色制造的背景下&#xff0c;环保设备制造行业正在迎来快速发展。然而&#xff0c;环评报告作为项目合规的“通行证”&#xff0c;却一直是企业最头疼的环节之一&#xff1a;编写复杂、审核周期长、错误率高。传统的审核模式不仅耗时耗力&#xff0c;还容易出…

常见的多态

一、核心概念多态&#xff08;Polymorphism&#xff09; 的字面意思是“多种形态”。在Java中&#xff0c;它指的是&#xff1a;同一个行为&#xff08;方法&#xff09;具有多个不同表现形式或形态的能力。更具体地说&#xff0c;它允许你&#xff1a;父类的引用指向子类的对象…

20250909_排查10.1.1.190档案库房综合管理系统20250908备份缺失问题+优化scp脚本(把失败原因记录进日志)并测试脚本执行情况

目录 一、现象(图中现象) 二、可能原因 1、本地源文件没生成(最可能原因) 2、清理逻辑误删 三、时间同步检查 1、运行命令查看当前时间源:w32tm /query /source 2、修改为内网 NTP 服务器 10.1.10.251: 四、脚本优化 1、scp.bat vs roboscp.bat 对比表 2、robo…

OpenHarmony之有源NFC-connected_nfc_tag模块详解

1. 模块概述 Connected NFC Tag模块是OpenHarmony NFC子系统的一部分,专门用于处理有源NFC标签的读写操作。与基础NFC模块不同,该模块专注于与已连接的有源NFC标签进行交互,提供更高层次的API供应用层使用。 设备必须具备有源NFC标签芯片,才能使用有源NFC标签的读和写服务…

MySql案例详解之事务

下面我会从“事务是什么”→“为什么需要事务”→“事务的四大特性&#xff08;ACID&#xff09;”→“MySQL中怎么用事务”→“常见坑与调试技巧”→“完整实战案例&#xff08;含代码、输出、讲解&#xff09;”六个层次&#xff0c;给你一个“看完就能上手”的MySQL事务速查…

Linux之环境变量(内容由浅入深,层层递进)

一、概念介绍&#xff08;来源&#xff1a;比特就业课&#xff09;环境变量一般是指在操作系统中用来指定操作系统运行环境的一些参数环境变量通常具有某些特殊用途&#xff0c;并且在系统中通常具有全局特性二、现象引入与解答 1.为什么像ls这样的系统指令可以直接执行&#x…

监控 Linux 服务器资源

使用 Bash 脚本监控 Linux 服务器资源并发送告警邮件前言一、&#x1f6e0;️ 脚本功能概览二、 &#x1f4dc; 脚本核心逻辑分解2.1. 变量初始化2.2. CPU 使用率监控2.3. 内存使用率监控2.4. 磁盘使用率监控2.5. 磁盘 IO 延迟监控&#xff08;await&#xff09;2.6. 网络流量监…

随机获取数组内任意元素

Math.random() * arr.length 是 JavaScript 中常用的表达式&#xff0c;用于生成一个范围在 [0, arr.length) 之间的随机浮点数&#xff08;包含 0&#xff0c;但不包含数组长度本身&#xff09;。 作用说明&#xff1a; Math.random() 生成一个 [0, 1) 区间的随机浮点数&#…

android studio gradle 访问不了

1.通过国内镜像站 2.通过本地部署 参考这个搞定 https://blog.csdn.net/2401_82819685/article/details/144542784

科普:企业微信的第三方应用涉及的“配置应用权限”

企业微信的第三方应用涉及“配置应用权限”&#xff0c;它在不同阶段含义不同&#xff1a;开发阶段意指应用自身所需的功能权限&#xff0c;安装阶段意指企业管理员对应用使用范围的控制&#xff0c;产生此歧义的问题&#xff0c;归根到低还是语言的缩写问题&#xff0c;设想一…

YOLOv11改进大全:从卷积层到检测头,全方位提升目标检测性能

## 1 引言YOLO&#xff08;You Only Look Once&#xff09;系列作为目标检测领域的重要算法&#xff0c;以其**高效推理**和**良好精度**赢得了广泛认可。2024年9月&#xff0c;Ultralytics团队正式发布了YOLOv11&#xff0c;在先前版本基础上引入了**多项架构改进**和**训练优…

JWT全面理解

目录 一、JWT是什么 1、身份认证&#xff08;最核心用途&#xff09; 2、信息交换 3、授权控制 二、JWT的核心价值 三、如何理解JWT的结构和工作原理 1、三部分结构解析 2、核心工作流程 四、JWT的使用步骤 1、添加依赖 2、添加配置文件 3、创建实体类 4、创建JWT…

量子文件传输系统:简单高效的文件分享解决方案

&#x1f310; 在线体验地址&#xff1a;https://share-file.narutogis.com/ &#x1f4e4; 项目概述 量子文件传输系统是一款基于Python Flask开发的高效文件管理与分享工具&#xff0c;致力于提供简单、安全、可靠的文件传输解决方案。系统支持用户管理、文件上传下载、自动…

基于 GitHub Actions 的零成本自动化部署:把 Vite/Vue3 项目一键发布到 GitHub Pages 的完整实战

1. 实现自动化部署1.1. 创建 vue 项目# 1. 安装/确认 Node.js&#xff08;>14&#xff09; node -v # 推荐 20.x# 2. 创建项目&#xff08;交互式&#xff0c;选 Vue3 Router 等&#xff09; npm init vuelatest github-actions-demo # 创建vite项目 # 或&#xff1a;v…

minio 文件批量下载

MinIO 批量下载功能说明 1. 功能描述 前端勾选多个对象文件后&#xff0c;一次性将这些对象从 MinIO 拉取并打包成 ZIP&#xff0c;通过浏览器直接下载。整体特性&#xff1a; 支持跨桶批量下载&#xff08;不同 bucket 的对象可同时下载&#xff09;。服务端采用流式压缩边…

机器学习11——特征选择与稀疏学习

上一章&#xff1a;机器学习10——降维与度量学习 下一章&#xff1a;【从 0 到 1 落地】机器学习实操项目目录&#xff1a;覆盖入门到进阶&#xff0c;大学生就业 / 竞赛必备[TOC] 机器学习实战项目&#xff1a;【从 0 到 1 落地】机器学习实操项目目录&#xff1a;覆盖入门到…

整理python快速构建数据可视化前端的Dash库

一.Dash框架# 导入 Dash 相关库 import dash from dash import dcc, html # dcc 是 Dash 核心组件库&#xff0c;html 是 HTML 组件库 from typing import Generic# 创建一个 Dash 应用实例 app dash.Dash(__name__)# 定义应用的布局 app.layout html.Div(children[# 添加一…

RNN循环神经网络(一):基础RNN结构、双向RNN

RNN循环神经网络 什么是循环神经网络&#xff1f; 循环神经网络&#xff08;Recurrent Neural Network, RNN&#xff09;是一类专门用于处理序列数据的神经网络架构。与传统的前馈神经网络不同&#xff0c;RNN具有"记忆"能力&#xff0c;能够捕捉数据中的时间依赖关系…

#C语言——刷题攻略:牛客编程入门训练(十):攻克 循环控制(二),轻松拿捏!

&#x1f31f;菜鸟主页&#xff1a;晨非辰的主页 &#x1f440;学习专栏&#xff1a;《C语言刷题合集》 &#x1f4aa;学习阶段&#xff1a;C语言方向初学者 ⏳名言欣赏&#xff1a;"代码行数决定你的下限&#xff0c;算法思维决定你的上限。" 目录 1. BC82 乘法表…