第2節-過濾表中的行-WHERE

摘要:在本教程中,您將學習如何使用 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 乘法表…