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_name
为 Charlton
的员工。它使用逻辑运算符 =
和 WHERE 子句 WHERE first_name = 'Charlton'
。下面显示了 pgAdmin 中上述查询的结果。
以下示例使用大于运算符 >
检索工资列中的值大于 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
多个条件
使用 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
因此,您可以使用 WHERE 子句来过滤数据。