WHERE 子句用于过滤结果中的行。它可以与 SELECT、UPDATE 和 DELETE 语句一起使用。

SELECT <column_list>
FROM <table_name>
[ WHERE <conditions>]
[ GROUP BY ]
[ HAVING condition ]
[ ORDER BY ] 
  • 1
  • 2
  • 3
  • 4
  • 5

WHERE 子句紧接在 FROM 子句之后、GROUP BY、HAVING 和 ORDER BY 子句之前指定。 WHERE 关键字后可以指定一个或多个条件。

WHERE 条件必须为 true 或 false 才能过滤行。任何不满足此条件的行都将从结果中消除。

在 PostgreSQL 中,首先计算 FROM 子句,然后是 WHERE 子句,最后是 SELECT 子句。

WHERE 条件必须使用以下一个或多个比较和逻辑运算符。

操作符描述
=平等的
!= 或 <>不等于
>大于
>=大于或等于
<小于
<=小于或等于
BETWEEN在某个范围之间
LIKE搜索模式
IN为列指定多个可能的值
操作符描述
AND逻辑运算符 AND
OR逻辑运算符 OR
NOT对运算符的结果求反

让我们看看如何使用 SELECT 语句中的 WHERE 子句从以下 employee 表中获取数据。

以下示例使用 WHERE 子句以及等于 = 的比较运算符来过滤数据。

SELECT *
FROM employee 
WHERE first_name = 'Charlton'; 
  • 1
  • 2

上述 SELECT 语句检索 first_nameCharlton 的员工。它使用逻辑运算符 = 和 WHERE 子句 WHERE first_name = 'Charlton'。下面显示了 pgAdmin 中上述查询的结果。

PostgreSQL WHERE查询

以下示例使用大于运算符 > 检索工资列中的值大于 50000 的行。

SELECT * FROM employee
WHERE salary > 50000; 
  • 1

您可以将 WHERE 子句与 IN 运算符一起使用。 IN 运算符用于定义要搜索的值列表。以下查询将返回 emp_id = 1 OR emp_id = 6 的员工列表。

SELECT * FROM employee
WHERE emp_id IN (1,6); 
  • 1

PostgreSQL WHERE查询

多个条件

使用 AND 和 OR 运算符通过 WHERE 子句指定多个条件。

以下查询将获取Gender = F AND Salary > 50000的员工列表。 它将检索满足这两个条件的行。

SELECT * FROM employee
WHERE gender = 'F' AND salary > 50000; 
  • 1

以下查询使用 OR 运算符查找性别为 Female 或 salary 大于 50000 的员工列表。 它将检索至少满足一个条件的行。

SELECT * FROM employee
WHERE gender = 'F' OR salary > 50000; 
  • 1

PostgreSQL WHERE查询

因此,您可以使用 WHERE 子句来过滤数据。