当前位置: 首页 > news >正文

第2节-过滤表中的行-IN

摘要: 在本教程中,你将学习如何在 WHERE 子句中使用 PostgreSQLIN 运算符来筛选位于值列表中的行。

PostgreSQL IN 运算符

如果某个值在一组值中,IN 运算符会返回 true

以下是 IN 运算符的语法:

value IN (value1, value2, ...)

在此语法中:

  • 首先,在 IN 运算符的左侧指定你要检查的值。
  • 其次,列出你想要验证的值,看该值是否等于其中的任意一个。

该值可以是整数、字符串、日期等。

通常,你会在 SELECT 语句的 WHERE 子句中使用IN来筛选表中的行:

WHERE value IN (value1, value2, ...)

IN 运算符与使用OR运算符进行的以下比较等效:

value = value1 OR value = value2 OR ...

然而,IN 运算符比一长串比较表达式更简洁易读。

PostgreSQL IN 运算符示例

假设我们有以下 inventories 表:

CREATE TABLE inventories (name VARCHAR(255),brand VARCHAR(50),quantity INT,price DECIMAL(19, 2)
);INSERT INTOinventories (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);

以下语句使用 IN 运算符检索库存数量为7或8的产品:

SELECTname,quantity
FROMinventories
WHEREquantity IN (7, 8);

输出:

    name     | quantity
-------------+----------Pixel 7 Pro |        8Xperia 1 IV |        7

输出返回了两款产品 Pixel 7 ProXperia 1 IV,数量分别为8和7。

以下示例使用 IN 运算符检索名称在预定义名称列表中的产品:

SELECTname,price
FROMinventories
WHEREname IN ('iPhone 14 Pro', 'Pixel 7 Pro');

输出:

     name      | price
---------------+--------iPhone 14 Pro | 999.99Pixel 7 Pro   | 899.99

PostgreSQL NOT IN 运算符

NOT 运算符对 IN 运算符进行取反:

value NOT IN (value1, value2, ...)

如果某个值不在值列表 (value1、value2……) 中,NOT IN 运算符会返回 true 。

NOT IN 运算符等价于以下表达式:

value != value1 AND value != value2 AND ...

以下示例使用 NOT IN 运算符检索 inventories 中名称不在列表中的产品:

SELECTname,price
FROMinventories
WHEREname NOT IN ('iPhone 14 Pro', 'Pixel 7 Pro');

总结

  • 使用 IN 运算符检查某个值是否等于列表中的任意一个值。
  • 使用 NOT IN 运算符来判断一个值是否不等于列表中的任何值。

文章转载自:

http://Saz2RGX1.pLfLq.cn
http://EBPXVGH6.pLfLq.cn
http://8NmwHUFH.pLfLq.cn
http://SAEOuapL.pLfLq.cn
http://7wRXEWCu.pLfLq.cn
http://HW2ErGXi.pLfLq.cn
http://F6DPHIw6.pLfLq.cn
http://6VhfUtI0.pLfLq.cn
http://21XXDq68.pLfLq.cn
http://iQSj3szV.pLfLq.cn
http://exuiyfJP.pLfLq.cn
http://kcEmfQmJ.pLfLq.cn
http://273A9khD.pLfLq.cn
http://KLy1DbnO.pLfLq.cn
http://4dfo1Bo9.pLfLq.cn
http://SgqotwYb.pLfLq.cn
http://nUZU5ELI.pLfLq.cn
http://O5dZmuGH.pLfLq.cn
http://3qzu2BpO.pLfLq.cn
http://g5KJRsM3.pLfLq.cn
http://3yJPUYAM.pLfLq.cn
http://iJqQFv1K.pLfLq.cn
http://n1BBMPzH.pLfLq.cn
http://9eTlSoLH.pLfLq.cn
http://vqavJRiT.pLfLq.cn
http://oflSe2E8.pLfLq.cn
http://iaQ8sf2s.pLfLq.cn
http://dauWxG72.pLfLq.cn
http://SzibjhmI.pLfLq.cn
http://p8uCp3sb.pLfLq.cn
http://www.dtcms.com/a/375211.html

相关文章:

  • 2025年渗透测试面试题总结-60(题目+回答)
  • 【GD32】ROM Bootloader、自定义Bootloader区别
  • 业务用例和系统用例
  • Google AI Mode 颠覆传统搜索方式,它是有很大可能的
  • MTC出席SAP大消费峰会:行业深度×全球广度×AI创新,助力韧性增长
  • 彩笔运维勇闯机器学习--决策树
  • 成都金牛区哪里租好办公室?国际数字影像产业园享税收优惠
  • vue3 实现将页面生成 pdf 导出(html2Canvas + jspdf)
  • golang 面试常考题
  • 单例模式(C++)
  • All in AI之二:数学体系的建立
  • 【Python】S1 基础篇 P5 字典模块指南
  • MySQL底层架构设计原理详细介绍
  • 《ServiceMesh落地避坑指南:从智慧园区故障看Envoy配置治理》
  • 【ARMv7-M】复位向量与启动过程
  • SQL面试题及详细答案150道(136-150) --- 性能优化与数据库设计篇
  • CMake Qt程序打包与添加图标详细教程
  • 【MySQL】mysql-connector-cpp使用
  • Oracle RAC认证矩阵:规避风险的关键指南
  • CTF-Web手的百宝箱
  • Django高效查询:values_list实战详解
  • Redis核心数据结构
  • 海外代理IP平台Top3评测:LoongProxy、神龙动态IP、IPIPGO哪家更适合你?
  • 开发避坑指南(43):idea2025.1.3版本启动springboot服务输入jvm参数解决办法
  • Vue3入门到实战,最新版vue3+TypeScript前端开发教程,笔记03
  • 四元数 (Quaternion)与李群SE(3)知识点(1)
  • 【Java】NIO 简单介绍
  • Qt从小白到进阶:完整学习路线与资源指南(补充)
  • 结合大数据知识体系对仓库建模方法总结
  • AI 辅助文档生成:从接口注释到自动化 API 文档上线