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)