SQL AND & OR

AND & OR 运算符用于基于一个以上的条件对记录进行过滤。


SQL AND & OR 运算符

如果第一个条件和第二个条件都成立,则 AND 运算符显示一条记录。

如果第一个条件和第二个条件中只要有一个成立,则 OR 运算符显示一条记录。


演示数据库

在本教程中,我们将使用 runoops样本数据库。

下面是选自 "websites" 表的数据:

+----+----------------+---------------------------+-------+---------+
| id | name           | url                       | alexa | country |
+----+----------------+---------------------------+-------+---------+
|  1 | Google          | https://www.google.cm/    |     1 | USA     |
|  2 | Amazon         | https://z.cn/             |     2 | USA     |
|  3 | 淘宝           | https://www.taobao.com/   |    10 | CN      |
|  4 | 自学教程       | http://runoops.com/       |  5787 | CN      |
|  5 | 微博           | http://weibo.com/         |    18 | CN      |
|  6 | stackoverflow  | http://stackoverflow.com/ |    66 | IND     |
+----+----------------+---------------------------+-------+---------+

AND 运算符实例

下面的 SQL 语句从 "websites" 表中选取国家为 "CN" 且alexa排名大于 "50" 的所有网站:

SELECT * FROM websites
WHERE country='CN'
AND alexa > 50;

执行输出结果:

mysql> SELECT * FROM websites
    -> WHERE country='CN'
    -> AND alexa > 50;
+----+--------------+---------------------+-------+---------+
| id | name         | url                 | alexa | country |
+----+--------------+---------------------+-------+---------+
|  4 | 自学教程     | http://runoops.com/ |  5787 | CN      |
+----+--------------+---------------------+-------+---------+
1 row in set (0.00 sec)

OR 运算符实例

下面的 SQL 语句从 "websites" 表中选取国家为 "USA" 或者 "CN" 的所有客户:

SELECT * FROM websites
WHERE country='USA'
OR country='CN';

执行输出结果:

mysql> SELECT * FROM websites
    -> WHERE country='USA'
    -> OR country='CN';
+----+--------------+-------------------------+-------+---------+
| id | name         | url                     | alexa | country |
+----+--------------+-------------------------+-------+---------+
|  1 | Goole        | https://www.google.cm/  |     1 | USA     |
|  2 | Amazon       | https://z.cn/           |     2 | USA     |
|  3 | 淘宝         | https://www.taobao.com/ |    10 | CN      |
|  4 | 自学教程     | http://runoops.com/     |  5787 | CN      |
|  5 | 微博         | http://weibo.com/       |    18 | CN      |
+----+--------------+-------------------------+-------+---------+
5 rows in set (0.00 sec)

结合 AND & OR

您也可以把 AND 和 OR 结合起来(使用圆括号来组成复杂的表达式)。

下面的 SQL 语句从 "websites" 表中选取 alexa 排名大于 "15" 且国家为 "CN" 或 "USA" 的所有网站:

SELECT * FROM websites
WHERE alexa > 15
AND (country='CN' OR country='USA');

执行输出结果:

mysql> SELECT * FROM websites
    -> WHERE alexa > 15
    -> AND (country='CN' OR country='USA');
+----+--------------+---------------------+-------+---------+
| id | name         | url                 | alexa | country |
+----+--------------+---------------------+-------+---------+
|  4 | 自学教程     | http://runoops.com/ |  5787 | CN      |
|  5 | 微博         | http://weibo.com/   |    18 | CN      |
+----+--------------+---------------------+-------+---------+
2 rows in set (0.00 sec)