mysql学习-过滤数据和IN操作数据
2021/6/30 19:25:55
本文主要是介绍mysql学习-过滤数据和IN操作数据,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
# 使用逻辑运算符过滤数据 ## 1. 使用 AND 在查询表的时候,如果想满足两个给定的条件,可以在WHRER子句中使用AND运算符来实现,AND表示”与“关系。在进行查询的时候,既要满足给定的第一个条件,也要同时满足给定的第二个条件,如果不满足两个查询条件中的一个,这样的记录就会被排除掉,AND运算符的真值表如下所示: |条件1 |条件2 |结果 | |:--------:|:---------:|:----------| |true|true|true| |true|false|false| |false|false|false| |true|null|null| |false|null|false| |null|null|null| ```sql SELECT id, `name`, current_price FROM goods WHERE current_price > 2000 AND current_price < 3000; ``` 在定义查询的时候,在WHERE语句中可以设置多个筛选条件,可以同时对多个AND来连接多个表达式,只有同时满足所有的查询条件的记录才会被查询出来 ```sql SELECT id, `name`, current_price, subcat_id FROM goods WHERE views_count > 1 AND current_price > 2000 AND subcat_id = 37; ``` ## 2. 使用OR运算符 在查询表的时候,如果想要满足两个给定的条件中的一个的时候,可以在WHERE语句中使用OR运算符来实现。OR代表”或“的关系,即满足第一个或者第二个的给定条件,如果不满足其中一个,这样的记录就会被排除掉,真值表如下所示: |条件1 |条件2 |结果 | |:--------:|:---------:|:----------| |true|true|true| |true|false|true| |false|false|false| |true|null|true| |null|false|false| |null|null|null| ```sql SELECT id, `name`, current_price, subcat_id FROM goods WHERE subcat_id = 35 OR subcat_id = 33; ``` 在定义查询的时候,可以使用多个OR表达式,只要满足一个查询条件就能被查询出来 ```sql SELECT id, `name`, current_price, introduction FROM goods WHERE `name` LIKE '%Sumsung%' OR introduction LIKE '%证书编号%' OR current_price < 3000; ``` ## 3. 使用NOT运算符 使用NOT运算符来查询,表示"非”的关系,即不满足所给条件 ```sql SELECT id, `name`, is_sale FROM goods WHERE NOT is_sale = 1; ``` ## 4. 逻辑运算符的优先级 在查询的时候可以将AND,OR,NOT运算符综合起来使用,但是三者拥有不同的优先顺序,优先级别 NOT > AND > OR ```sql SELECT id, `name`, current_price, subcat_id FROM goods WHERE subcat_id = 37 OR subcat_id = 33 AND current_price > 2000; ``` 优化后 ```sql SELECT id, `name`, current_price, subcat_id FROM goods WHERE (subcat_id = 37 OR subcat_id = 33) AND current_price > 2000; ``` ```sql SELECT id,`name`,introduction,subcat_id FROM goods WHERE (`name` LIKE '%西门子%' OR `introduction` LIKE '%证书编号%' ) AND (NOT subcat_id =29); ``` ```sql SELECT id,`name`,introduction,subcat_id FROM goods WHERE (NOT subcat_id =33 ) AND ( NOT id =2); ``` # 使用IN操作符过滤数据 在对表进行数据查询的时候,有时候需要查询出多个条件中满足一个条件的数据,这种情况可以使用OR运算符,但是对于较多的条件来说使用OR运算符并不方便。例如在表中查询出省份为“吉林省”等数据,此时可以用IN操作符代替OR运算符完成查询任务。 ## 1. 使用IN查询数据 使用IN查询操作符可以判断某个字段的值是否在指定的集合中,如果值在集合中,则满足查询条件,该记录将被查询出来,如果不在集合中,则满足查询条件 格式如下: ```sql SELECT column_name FROM table_name WHERE column_name IN (value1,vaule2,....) ``` 参数说明 - cloumn_name : 表示需要查询的列名 - table_name : 表示需要查询的表名 - cloumn_name: 表示需要指定查询条件的列 - value : 表示值列表 ```sql SELECT id,`name`,current_price FROM goods WHERE id IN (22,44,55); ``` 在IN操作符后的值列表中不但可以使用数值类型数据,还可以使用字符类型数据 ```sql SELECT id,`name`,current_price FROM goods WHERE `name` IN ('三星','西门子'); ``` ## 2. 在IN中使用计算表达式 在IN操作符后的值列表中还可以使用算数表达式 ```sql SELECT id,`name`,current_price FROM goods WHERE current_price IN (3799-2400,2000+100); ``` ## 3. 在IN中使用列进行查询 在使用IN查询的时候,不但可以使用数值类型和字符类型进行值查询,还可以使用列名作为值进行查询 ```sql SELECT id,`name`,original_price,current_price FROM goods WHERE 1399 IN (original_price,current_price); ``` ## 4. 使用NOT IN查询数据 NOT IN 可以查询出给定条件的以为的数据 格式如下: ```sql SELECT column_name FROM table_name WHRER column_name NOT IN (value1,value2.....) ``` 参数说明 - column_name : 表示要查询的列的列名 - table_name : 表示需要查询的表名 - column_name : 表示需要指定的查询条件的列 - value : 表示值的列表 ```sql SELECT id,`name`,original_price,current_price FROM goods WHERE 1399 NOT IN (original_price,current_price); ``` ## 5. 使用NOT IN查询后两行的数据 使用NOT IN 查询后两行的数据,前提条件是需要知道表中共有多少行的数据,可以先用TOP将前几行查询出来,然后用NOT IN 查询后两行 ``` SELECT id,`name`,original_price,current_price FROM goods WHERE id NOT IN (SELECT TOP 8 id FROM goods); ```这篇关于mysql学习-过滤数据和IN操作数据的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-20部署MySQL集群入门:新手必读指南
- 2024-11-20部署MySQL集群教程:初学者指南
- 2024-11-20部署MySQL集群项目实战:新手教程
- 2024-11-20部署MySQL集群资料:新手入门教程
- 2024-11-20MySQL集群部署教程:入门级详解
- 2024-11-20MySQL集群教程:入门与实践指南
- 2024-11-20部署MySQL集群教程:新手入门指南
- 2024-11-20MySQL读写分离教程:轻松入门
- 2024-11-20部署MySQL集群入门:一步一步搭建你的数据库集群
- 2024-11-19部署MySQL集群学习:入门教程