Where 子句

收藏824

阅读10263

更新时间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

相关

视频

RELATED VIDEOS

更多

免费

phpStudy极速入门视频教程

免费

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

11149次学习

收藏

免费

极客学院Git使用视频教程

免费

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

15709次学习

收藏

免费

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

42887次学习

收藏

免费

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

40264次学习

收藏

免费

尚观Linux中级视频教程
中级 尚观Linux中级视频教程

48298次学习

收藏

免费

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

41982次学习

收藏

科技资讯

更多

精选课程

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

共29课时

61.7万人学习

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

共25课时

39.3万人学习

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

共43课时

70.9万人学习

独孤九贱(1)_HTML5视频教程
独孤九贱(1)_HTML5视频教程

共25课时

61.6万人学习

独孤九贱(2)_CSS视频教程
独孤九贱(2)_CSS视频教程

共22课时

23万人学习

独孤九贱(3)_JavaScript视频教程
独孤九贱(3)_JavaScript视频教程

共28课时

33.9万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时

125万人学习

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

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