通过逻辑操作符过滤数据
2024/5/22 23:02:54
本文主要是介绍通过逻辑操作符过滤数据,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
AND操作符
如果要通过不止一个列进行过滤数据,可以使用AND操作符。
Students表:
+----+----------+------+--------+-------+ | id | class_id | name | gender | score | +----+----------+------+--------+-------+ | 1 | 1 | 小明 | M | 90 | | 2 | 1 | 小红 | F | 95 | | 3 | 1 | 小军 | M | 88 | | 4 | 1 | 小米 | F | 73 | | 5 | 2 | 小白 | F | 81 | | 6 | 2 | 小兵 | M | 55 | | 7 | 2 | 小林 | M | 85 | | 8 | 3 | 小新 | F | 91 | | 9 | 3 | 小王 | M | 89 | | 10 | 3 | 小丽 | F | 88 | +----+----------+------+--------+-------+
SELECT name,gender,score FROM Students WHERE score>80 AND gender='M'; +------+--------+-------+ | name | gender | score | +------+--------+-------+ | 小明 | M | 90 | | 小军 | M | 88 | | 小林 | M | 85 | | 小王 | M | 89 | +------+--------+-------+
这条SQL语句检索出score大于80且gender等于M的学生,返回的数据必须满足用AND关键字联结的两个条件。
如果想增加多个过滤条件,每个条件间都要使用AND关键字。
OR操作符
与AND操作符相反,满足任一条件就可以被检索出来。
实际上,在第一个条件满足时,不管第二个条件是否满足,相应的行都将被检索出来。
SELECT name,gender,score FROM Students WHERE score >= 90 OR gender = 'F'; +------+--------+-------+ | name | gender | score | +------+--------+-------+ | 小明 | M | 90 | | 小红 | F | 95 | | 小米 | F | 73 | | 小白 | F | 81 | | 小新 | F | 91 | | 小丽 | F | 88 | +------+--------+-------+
求值顺序
WHERE子句是可以包含任意数目的AND和OR操作符,两者结合就会带来求值顺序的问题。
假如需要检索出class_id为1或3,且score大于等于90的学生:
SELECT class_id,name,gender,score FROM Students WHERE class_id = 1 OR class_id = 3 AND score >= 90; +----------+------+--------+-------+ | class_id | name | gender | score | +----------+------+--------+-------+ | 1 | 小明 | M | 90 | | 1 | 小红 | F | 95 | | 1 | 小军 | M | 88 | | 1 | 小米 | F | 73 | | 3 | 小新 | F | 91 | +----------+------+--------+-------+
由于AND比OR操作符拥有更高的优先级,因此返回的数据并未达到预期。
此问题的解决方法是通过圆括号明确求值顺序:
SELECT class_id,name,gender,score FROM Students WHERE (class_id = 1 OR class_id = 3) AND score >= 90; +----------+------+--------+-------+ | class_id | name | gender | score | +----------+------+--------+-------+ | 1 | 小明 | M | 90 | | 1 | 小红 | F | 95 | | 3 | 小新 | F | 91 | +----------+------+--------+-------+
IN操作符
IN操作符用来指定条件范围,满足范围内条件的数据都将被检索出来。
IN操作符后跟由逗号分隔的合法值,这些值必须括在圆括号中。
SELECT class_id,name FROM Students WHERE class_id IN (1,3); +----------+------+ | class_id | name | +----------+------+ | 1 | 小明 | | 1 | 小红 | | 1 | 小军 | | 1 | 小米 | | 3 | 小新 | | 3 | 小王 | | 3 | 小丽 | +----------+------+
NOT操作符
NOT操作符有且只有一个功能,那就是否定其后跟随的任何条件。
NOT总是与其他操作符一起使用。
SELECT class_id,name FROM Students WHERE NOT class_id = 2; +----------+------+ | class_id | name | +----------+------+ | 1 | 小明 | | 1 | 小红 | | 1 | 小军 | | 1 | 小米 | | 3 | 小新 | | 3 | 小王 | | 3 | 小丽 | +----------+------+
这篇关于通过逻辑操作符过滤数据的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-15matplotlib作图不显示3D图,怎么办?
- 2024-06-1503-Loki 日志监控
- 2024-06-1504-让LLM理解知识 -Prompt
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现
- 2024-06-03为什么以及如何要进行架构设计权衡?
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)
- 2024-05-31全网首发!软考2024年5月《软件设计师》真题+解析+答案!(21-30题)
- 2024-05-30【Java】百万数据excel导出功能如何实现
- 2024-05-30我们小公司,哪像华为一样,用得上IPD(集成产品开发)?