根据条件选取记录
在前一章中,我们学习了如何使用WHERE子句中的单个条件从表中选取记录。但有时需要根据多个条件过滤记录,比如选择用户年龄大于30岁,国家是美国,选择产品价格低于100美元,评级大于4,等等。
AND 运算符
AND/与 运算符是一个逻辑运算符,它组合了两个条件,只有当两个条件的值都为真时才返回真。AND 运算符通常用于SELECT、UPDATE、DELETE语句的WHERE子句中,作为筛选条件。
SELECT column1_name, column2_name, columnN_name
FROM table_name
WHERE condition1 AND condition2;
现在,让我们来看一些例子。
前面章节里,在demo数据库中,我们创建了名为persons
的表,其中包含以下记录:
+----+-------------------+------------+-------------+
| id | name | birth_date | phone |
+----+-------------------+------------+-------------+
| 1 | Peter Wilson | 1990-07-15 | 0711-020361 |
| 2 | Carrie Simpson | 1995-05-01 | 0251-031259 |
| 3 | Victoria Ashworth | 1996-10-17 | 0695-346721 |
+----+-------------------+------------+-------------+
WHERE子句使用AND运算符
下面的SQL语句将从persons表中返回id >= 2,且名字里包含“Simpson”的人。
示例
SELECT * FROM persons
WHERE id >= 2 AND name like '%Simpson%';
执行之后,您将得到如下输出:
+----+----------------+------------+-------------+
| id | name | birth_date | phone |
+----+----------------+------------+-------------+
| 2 | Carrie Simpson | 1995-05-01 | 0251-031259 |
+----+----------------+------------+-------------+
OR 运算符
同样,OR/或运算符也是一个逻辑操作符,它组合了两个条件,当其中一个条件为真时,返回真。
下面的SQL语句将从persons表中返回id >= 2,或名字里包含“Simpson”的人。
示例
SELECT * FROM persons WHERE id >= 2 OR name like '%Simpson%';
这次你会得到这样的输出:
+----+-------------------+------------+-------------+
| id | name | birth_date | phone |
+----+-------------------+------------+-------------+
| 2 | Carrie Simpson | 1995-05-01 | 0251-031259 |
| 3 | Victoria Ashworth | 1996-10-17 | 0695-346721 |
+----+-------------------+------------+-------------+
组合使用 AND 与 OR 运算符
您还可以组合使用AND和OR来创建复杂的条件表达式。
下面的SQL语句将返回返回id >= 2,且名字里包含“Simpson”或者“Ashworth”的人。
示例
SELECT * FROM persons
WHERE id >= 2 AND (name like '%Simpson%' OR name like '%Ashworth%');
这次你会得到这样的输出:
+----+-------------------+------------+-------------+
| id | name | birth_date | phone |
+----+-------------------+------------+-------------+
| 2 | Carrie Simpson | 1995-05-01 | 0251-031259 |
| 3 | Victoria Ashworth | 1996-10-17 | 0695-346721 |
+----+-------------------+------------+-------------+