PostgreSQL 教程

浏览23595
更新时间2025-08-21

PostgreSQL WHERE 子句用于在从单个表中获取数据或与多个表连接时指定条件。

如果满足给定条件,则仅从表中返回特定值。 您可以使用 WHERE 子句过滤掉不希望包含在结果集中的行。

WHERE 子句不仅用于 SELECT 语句,还用于 UPDATE、DELETE 语句等,我们将在后续章节中进行研究。


语法

带WHERE子句的SELECT语句基本语法如下 −

SELECT column1, column2, columnN
FROM table_name
WHERE [search_condition]

您可以使用 比较或逻辑运算符。 来指定 search_condition,例如 >, <, =, LIKE, NOT, 等。下面的示例将清楚地说明这个概念。


示例

考虑表COMPANY的记录如下 −

testdb# select * from COMPANY;
 id | name  | age | address   | salary
----+-------+-----+-----------+--------
  1 | Paul  |  32 | California|  20000
  2 | Allen |  25 | Texas     |  15000
  3 | Teddy |  23 | Norway    |  20000
  4 | Mark  |  25 | Rich-Mond |  65000
  5 | David |  27 | Texas     |  85000
  6 | Kim   |  22 | South-Hall|  45000
  7 | James |  24 | Houston   |  10000
(7 rows)

以下是显示 PostgreSQL 逻辑运算符用法的简单示例。 以下 SELECT 语句将列出 AGE 大于或等于 25 AND 工资大于或等于 65000.00 的所有记录 −

testdb=# SELECT * FROM COMPANY WHERE AGE >= 25 AND SALARY >= 65000;

上面给出的 PostgreSQL 语句将产生以下结果 −

 id | name  | age |  address   | salary
----+-------+-----+------------+--------
  4 | Mark  |  25 | Rich-Mond  |  65000
  5 | David |  27 | Texas      |  85000
(2 rows)
 

以下 SELECT 语句列出了 AGE 大于或等于 25 OR 工资大于或等于 65000.00 的所有记录 −

testdb=# SELECT * FROM COMPANY WHERE AGE >= 25 OR SALARY >= 65000;

上面给出的 PostgreSQL 语句将产生以下结果 −

 id | name  | age | address     | salary
----+-------+-----+-------------+--------
  1 | Paul  |  32 | California  |  20000
  2 | Allen |  25 | Texas       |  15000
  4 | Mark  |  25 | Rich-Mond   |  65000
  5 | David |  27 | Texas       |  85000
(4 rows)

以下 SELECT 语句列出了 AGE 不为 NULL 的所有记录,这意味着所有记录,因为没有一条记录的 AGE 等于 NULL −

testdb=#  SELECT * FROM COMPANY WHERE AGE IS NOT NULL;

上面给出的 PostgreSQL 语句将产生以下结果 −

  id | name  | age | address    | salary
 ----+-------+-----+------------+--------
   1 | Paul  |  32 | California |  20000
   2 | Allen |  25 | Texas      |  15000
   3 | Teddy |  23 | Norway     |  20000
   4 | Mark  |  25 | Rich-Mond  |  65000
   5 | David |  27 | Texas      |  85000
   6 | Kim   |  22 | South-Hall |  45000
   7 | James |  24 | Houston    |  10000
(7 rows)

以下 SELECT 语句列出了 NAME 以 'Pa' 开头的所有记录,与 'Pa' 之后的内容无关。

testdb=# SELECT * FROM COMPANY WHERE NAME LIKE 'Pa%';

上面给出的 PostgreSQL 语句将产生以下结果 −

 id | name | age |address    | salary
----+------+-----+-----------+--------
  1 | Paul |  32 | California|  20000

以下 SELECT 语句列出了 AGE 值为 25 或 27 的所有记录 −

testdb=# SELECT * FROM COMPANY WHERE AGE IN ( 25, 27 );

上面给出的 PostgreSQL 语句将产生以下结果 −

 id | name  | age | address    | salary
----+-------+-----+------------+--------
  2 | Allen |  25 | Texas      |  15000
  4 | Mark  |  25 | Rich-Mond  |  65000
  5 | David |  27 | Texas      |  85000
(3 rows)

以下 SELECT 语句列出了 AGE 值既不是 25 也不是 27 的所有记录 −

testdb=# SELECT * FROM COMPANY WHERE AGE NOT IN ( 25, 27 );

上面给出的 PostgreSQL 语句将产生以下结果 −

 id | name  | age | address    | salary
----+-------+-----+------------+--------
  1 | Paul  |  32 | California |  20000
  3 | Teddy |  23 | Norway     |  20000
  6 | Kim   |  22 | South-Hall |  45000
  7 | James |  24 | Houston    |  10000
(4 rows)

以下 SELECT 语句列出了 AGE 值在 25 和 27 之间的所有记录 −

testdb=# SELECT * FROM COMPANY WHERE AGE BETWEEN 25 AND 27;

上面给出的 PostgreSQL 语句将产生以下结果 −

 id | name  | age | address    | salary
----+-------+-----+------------+--------
  2 | Allen |  25 | Texas      |  15000
  4 | Mark  |  25 | Rich-Mond  |  65000
  5 | David |  27 | Texas      |  85000
(3 rows)

下面的 SELECT 语句使用 SQL 子查询,其中子查询查找 AGE 字段具有 SALARY > 65000 的所有记录,随后 WHERE 子句与 EXISTS 运算符一起用于列出 sub 返回的结果中存在来自外部查询的 AGE 的所有记录 -询问 −

testdb=# SELECT AGE FROM COMPANY
        WHERE EXISTS (SELECT AGE FROM COMPANY WHERE SALARY > 65000);

上面给出的 PostgreSQL 语句将产生以下结果 −

 age
-----
  32
  25
  23
  25
  27
  22
  24
(7 rows)

以下 SELECT 语句使用 SQL 子查询,其中子查询查找 AGE 字段具有 SALARY > 65000 的所有记录,随后 WHERE 子句与 > 运算符一起使用,以列出来自外部查询的 AGE 大于结果中的年龄的所有记录 子查询返回−

testdb=# SELECT * FROM COMPANY
        WHERE AGE > (SELECT AGE FROM COMPANY WHERE SALARY > 65000);

上面给出的 PostgreSQL 语句将产生以下结果 −

 id | name | age | address    | salary
----+------+-----+------------+--------
  1 | Paul |  32 | California |  20000

相关视频

更多

免费

phpStudy极速入门视频教程
初级phpStudy极速入门视频教程

536032次学习

收藏

免费

Midjourney基础课程
初级Midjourney基础课程

13396次学习

收藏

免费

极客学院Git使用视频教程
初级极客学院Git使用视频教程

48377次学习

收藏

免费

尚观shell视频教程
高级尚观shell视频教程

16876次学习

收藏

免费

尚观Linux入门视频教程
初级尚观Linux入门视频教程

46741次学习

收藏

精品课程

更多
前端入门_HTML5
前端入门_HTML5

共29课时 | 62.6万人学习

CSS视频教程-玉女心经版
CSS视频教程-玉女心经版

共25课时 | 39.8万人学习

JavaScript极速入门_玉女心经系列
JavaScript极速入门_玉女心经系列

共43课时 | 73.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号