📅  最后修改于: 2020-11-26 06:21:38             🧑  作者: Mango
PostgreSQL的AND和OR运算符用于组合多个条件以缩小PostgreSQL语句中的选定数据。这两个运算符称为合取运算符。
这些运算符提供了一种在同一PostgreSQL语句中与不同运算符进行多次比较的方法。
AND运算符允许PostgreSQL语句的WHERE子句中存在多个条件。使用AND运算符,当所有条件都为真时,将假定完全条件为真。例如,仅当condition1和condition2均为true时,[condition1] AND [condition2]才为true。
带WHERE子句的AND运算符的基本语法如下-
SELECT column1, column2, columnN
FROM table_name
WHERE [condition1] AND [condition2]...AND [conditionN];
您可以使用AND运算符组合N个条件。对于要由PostgreSQL语句执行的操作,无论是事务还是查询,用AND分隔的所有条件都必须为TRUE。
考虑具有以下记录的表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)
以下SELECT语句列出了AGE大于或等于25并且薪金大于或等于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)
OR运算符还用于在PostgreSQL语句的WHERE子句中组合多个条件。使用OR运算符,如果至少有一个条件为true,则将假定完全条件为true。例如,如果condition1或condition2为true,则[condition1] OR [condition2]将为true。
带WHERE子句的OR运算符的基本语法如下-
SELECT column1, column2, columnN
FROM table_name
WHERE [condition1] OR [condition2]...OR [conditionN]
您可以使用OR运算符组合N个条件。对于要由PostgreSQL语句执行的操作(无论是事务还是查询),仅由OR分隔的条件之一必须为TRUE。
考虑具有以下记录的COMPANY表-
# 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)
以下SELECT语句列出了AGE大于或等于25或薪金大于或等于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)