命令行操作MySQL - in查询

这是命令行操作MySQL数据库系列博客的第十三篇,今天这篇博客记录in如何进行查询。(IN 与 NOT IN)



简介

IN查询就是查询集合内的所有数据,NOT IN就是查询非集合内的数据。
集合:括号内自己填写的数据。

IN查询

有的时候,当我们需要查询的目标记录限定在某个集合中的时候,在MySQL中可以使用关键字IN来实现,关键字IN可以实现判断字段的数值是否在指定集合中,该关键字的具体语句形式如下:
select * from 表名 where 字段名 IN(数据1, ..., 数据n);

意思是:查询表中所有与IN集合内相同的数据(即将满足查询条件的记录查询出来,否则不会被查询出来)。

例:

1. 首先创建一张表,并插入数据

在这里插入图片描述

2. 使用IN查询

(1).查询表name字段中符合name等于‘小蓝’的所有数据。

select * from in_table where name IN('小蓝');

在这里插入图片描述

(2).查询表name字段中符合name等于‘小明’与name等于‘小红’的所有数据。

select * from in_table where name IN('小明', '小红');

在这里插入图片描述

NOT IN查询

使用NOT IN可以反向查询非集合中的数据

具体语句形式如下:
select * from 表名 where 字段名 NOT IN(数据1, ..., 数据n);

例:

1. 使用NOT IN查询

(1). 查询除小蓝之外的所有数据

select * from in_table where name NOT IN('小蓝');

在这里插入图片描述

(2). 查询除小明和小红的所有数据

select * from in_table where name NOT IN('小明', '小红');

在这里插入图片描述

注意慎用IN 与 NOT IN查询NULL

集合查询的注意: 集合中慎用 NULL

在具体使用关键字IN时,查询的集合中如果存在NULL,则不会影响查询,NULL 存不存在的效果都一样;但如果使用关键字NOT IN,查询的集合中如果存在NULL,则不会查询到任何的结果。

简析:集合查询IN如果存在有NULL,则NULL数据不会查询出来,NOT IN查询如果存在有NULL,则查询不到任何结果。

例:

1. 往表中插入一条NULL数据

在这里插入图片描述

2. 使用IN查询NULL

select * from in_table where name IN('小红', NULL);

NULL数据不会被查询出来。
在这里插入图片描述

3. 使用NOT IN查询NULL

select * from in_table where name NOT IN('小红', NULL);

不会查询到任何数据。
在这里插入图片描述


总结:
IN查询其实很简单的,IN是查询集合中的数据,而NOT IN是查询非集合中的数据;注意不要使用IN与NOT IN进行NULL的查询即可。

### MySQL `--in` 参数解析 在 MySQL命令行工具中,`--in` 并不是一个标准的参数名称。然而,在 MySQL 命令行客户端以及相关工具(如 mysqldump)中,存在一些类似的参数可能与用户的意图有关。 #### 1. `-e/--execute` 如果用户提到的是类似于 `--in` 的功能,可能是误记为 `--execute` 或者其短形式 `-e`。此参数允许直接执行一条 SQL 语句并退出[^1]。 例如: ```bash mysql -h hostname -P port -u username -p password -e "SELECT * FROM table_name;" ``` 这条命令会在不进入交互模式的情况下运行指定的 SQL 查询,并返回结果。 --- #### 2. `IN` 关键字 MySQL 中确实有一个关键字 `IN`,用于条件判断中的集合匹配操作。它通常出现在 `WHERE` 子句中,表示某个字段的值属于一组特定值之一。语法如下: ```sql SELECT column_name(s) FROM table_name WHERE column_name IN (value1, value2, ...); ``` 例如: ```sql SELECT name FROM employees WHERE department_id IN (1, 2, 3); ``` 这里的 `IN` 表达式相当于多个 `OR` 条件的简化写法[^4]。 --- #### 3. 可能混淆的其他参数 除了上述内容外,还可能存在某些情况下容易被误解成 `--in` 的选项,比如以下几种情况: - **mysqldump 工具中的 `--insert-ignore`**:这个参数的作用是在导出数据时生成带有 `INSERT IGNORE` 的语句,从而忽略因唯一约束冲突而产生的错误[^5]。 ```bash mysqldump --insert-ignore -u root -p database_name > dump.sql ``` - **全文索引重建过程中的 `innodb_ft_min_token_size` 配置项**:虽然这不是严格意义上的 `--in` 参数,但它涉及到了 “最小词长”的定义,可能会让用户联想到类似的功能[^3]。 --- #### 示例代码展示 以下是几个实际应用的例子来帮助理解这些概念: ##### 使用 `-e` 执行单条SQL语句 ```bash mysql -uroot -prootpass -e "SHOW DATABASES;" | grep test_db; ``` ##### 利用 `IN` 实现批量查询 ```sql SELECT product_name FROM products WHERE category_id IN (101, 102, 103); ``` ##### 导出带 `IGNORE` 插入的数据副本 ```bash mysqldump --insert-ignore -u admin_user -padmin_pass sample_database > backup_data.sql ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cpp_learners

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值