MySQL筛选时的反选
在MySQL中,我们可以使用WHERE
子句来对查询结果进行筛选。要实现反选的效果,即排除满足条件的行,我们可以使用逻辑运算符NOT
结合适当的条件进行筛选。
以下是一个示例表格students
:
id | name | gender | age |
---|---|---|---|
1 | Alice | F | 20 |
2 | Bob | M | 22 |
3 | Carol | F | 21 |
4 | David | M | 23 |
5 | Eve | F | 19 |
示例1:筛选出非女性的学生
我们可以使用WHERE
子句和NOT
运算符来筛选出非女性的学生。
SELECT * FROM students WHERE NOT gender = 'F';
以上代码将返回:
id | name | gender | age |
---|---|---|---|
2 | Bob | M | 22 |
4 | David | M | 23 |
示例2:筛选出非年龄在20到22之间的学生
我们可以使用WHERE
子句和NOT
运算符来筛选出非年龄在20到22之间的学生。
SELECT * FROM students WHERE NOT age BETWEEN 20 AND 22;
以上代码将返回:
id | name | gender | age |
---|---|---|---|
1 | Alice | F | 20 |
4 | David | M | 23 |
5 | Eve | F | 19 |
示例3:筛选出非特定姓名的学生
我们可以使用WHERE
子句和NOT
运算符来筛选出非特定姓名的学生。
SELECT * FROM students WHERE NOT name IN ('Alice', 'Carol');
以上代码将返回:
id | name | gender | age |
---|---|---|---|
2 | Bob | M | 22 |
4 | David | M | 23 |
5 | Eve | F | 19 |
示例4:筛选出非满足多个条件的学生
我们可以使用WHERE
子句和NOT
运算符来筛选出不满足多个条件的学生。
SELECT * FROM students WHERE NOT (gender = 'F' AND age < 22);
以上代码将返回:
id | name | gender | age |
---|---|---|---|
2 | Bob | M | 22 |
4 | David | M | 23 |
示例5:筛选出非空值的学生
我们可以使用WHERE
子句和NOT
运算符来筛选出非空值的学生。
SELECT * FROM students WHERE NOT name IS NULL;
以上代码将返回:
id | name | gender | age |
---|---|---|---|
1 | Alice | F | 20 |
2 | Bob | M | 22 |
3 | Carol | F | 21 |
4 | David | M | 23 |
5 | Eve | F | 19 |
流程图
下面是使用mermaid语法绘制的流程图:
flowchart TD
A[开始] --> B[筛选条件]
B --> C[使用WHERE子句和NOT运算符进行反选筛选]
C --> D[返回结果]
D --> E[结束]