MySQL-具有AND,OR和NOT运算符的WHERE子句
时间:2020-02-23 14:41:04 来源:igfitidea点击:
在本教程中,我们将学习在MySQL中使用带AND,OR和NOT运算符的where子句从表中选择数据。
使用WHERE和AND运算符进行选择
仅当所有条件为TRUE时,我们才将AND运算符与WHERE子句一起使用以获取结果。
语法:
SELECT * FROM table_name WHERE condition1 AND condition2;
对于上面的查询,我们将仅获取" condition1"和" condition2"均为TRUE的那些行。
在下面的示例中,我们将提取满足以下所有条件的所有员工。
- 得分> 5的员工
- 以及在" 1900-05-01"或者之后出生的员工
mysql> SELECT * FROM employee WHERE score > 5 AND birthday >= '1900-05-01';
+------------+-----------+----------+---------------------+-------+------------+---------------------+---------------------+ | employeeid | firstname | lastname | email | score | birthday | lastmodified | created | +------------+-----------+----------+---------------------+-------+------------+---------------------+---------------------+ | e03 | Jane | Doe | [email protected] | 9 | 1900-05-20 | 2016-01-01 01:01:04 | 2016-01-01 01:01:04 | | e04 | Tin | Tin | [email protected] | 7 | 1900-10-20 | 2016-01-01 01:02:03 | 2016-01-01 01:02:03 | +------------+-----------+----------+---------------------+-------+------------+---------------------+---------------------+ 2 rows in set (0.00 sec)
使用WHERE和OR运算符进行选择
如果任何条件为TRUE,我们将OR运算符与WHERE子句一起使用以获取结果。
语法:
SELECT * FROM table_name WHERE condition1 OR condition2;
对于上述查询,我们将获取" condition1"或者" condition2"为TRUE的所有行。
在以下示例中,我们将提取所有满足给定条件中的任何一个的员工。
- 得分> 5的员工
- 或者在" 1900-05-01"之后出生的员工
mysql> SELECT * FROM employee WHERE score > 5 OR birthday >= '1900-05-01';
+------------+-----------+----------+----------------------+-------+------------+---------------------+---------------------+ | employeeid | firstname | lastname | email | score | birthday | lastmodified | created | +------------+-----------+----------+----------------------+-------+------------+---------------------+---------------------+ | e01 | | | @example.com | 6 | 1900-01-01 | 2016-01-01 01:01:01 | 2016-01-01 01:01:01 | | e02 | John | Doe | [email protected] | 8 | 1900-02-03 | 2016-01-01 01:01:04 | 2016-01-01 01:01:04 | | e03 | Jane | Doe | [email protected] | 9 | 1900-05-20 | 2016-01-01 01:01:04 | 2016-01-01 01:01:04 | | e04 | Tin | Tin | [email protected] | 7 | 1900-10-20 | 2016-01-01 01:02:03 | 2016-01-01 01:02:03 | | e05 | Bob | Coder | [email protected] | 5 | 1900-08-20 | 2016-01-01 01:02:10 | 2016-01-01 01:02:10 | +------------+-----------+----------+----------------------+-------+------------+---------------------+---------------------+ 5 rows in set (0.00 sec)
使用带NOT运算符的WHERE选择
仅当条件为FALSE时,才将NOT运算符与WHERE子句一起使用以获取结果。
语法:
SELECT * FROM table_name WHERE NOT condition;
对于上述查询,我们将仅获取条件为FALSE的那些行。
在以下示例中,我们将提取所有没有姓氏为'Doe'的员工。
mysql> SELECT * FROM employee WHERE NOT lastname = 'Doe';
+------------+-----------+----------+----------------------+-------+------------+---------------------+---------------------+ | employeeid | firstname | lastname | email | score | birthday | lastmodified | created | +------------+-----------+----------+----------------------+-------+------------+---------------------+---------------------+ | e01 | | | @example.com | 6 | 1900-01-01 | 2016-01-01 01:01:01 | 2016-01-01 01:01:01 | | e04 | Tin | Tin | [email protected] | 7 | 1900-10-20 | 2016-01-01 01:02:03 | 2016-01-01 01:02:03 | | e05 | Bob | Coder | [email protected] | 5 | 1900-08-20 | 2016-01-01 01:02:10 | 2016-01-01 01:02:10 | +------------+-----------+----------+----------------------+-------+------------+---------------------+---------------------+ 3 rows in set (0.00 sec)