当前位置: 首页 > ops >正文

数据库-数据查询-in和Not in

引言

终极生活化指南:IN 和 NOT IN 就是你的点菜权

想象一下,你正站在一个视频平台的“巨型菜单”前,面对着海量的视频内容。而你手握两大点菜神器:INNOT IN,它们将帮助你精准地筛选出你想要的视频内容。


操作符核心动作拆解

操作符动作本质生活场景数据效果
IN精准抓取勾选"必吃招牌菜"只呈现明确指定的内容
NOT IN智能过滤划掉"忌口食材"排除干扰项的全量展示

沉浸式点菜体验

🍲 场景一:精品独享模式 (IN)
[你滑动菜单] → 勾选 ✅:  IN ('爆款剧','独家综艺','影院新片')  [后厨响应] → 火速上菜:  《庆余年2》(爆款剧) | 《歌手2024》(独家综艺) | 《热辣滚烫》(影院新片)

💡 洞察

像在爱奇艺"迷雾剧场"精准点播——用 IN 锁定头部内容,为优质资源付费。

解释
你明确告诉平台你感兴趣的类别,平台根据你的选择,只推荐符合这些类别的剧集。这就像你在一家高档餐厅,只选择他们最拿手的几道招牌菜。


🍜 场景二:自由探索模式 (NOT IN)
[你标注禁忌] → 划掉 ❌:  NOT IN ('广告','营销号','低质搬运')  [后厨响应] → 惊喜套餐:  大学生露营vlog | 手作匠人纪录片 | 猫咪相声 ← B站抖音原生创作

💡 洞察

像在抖音开启"青少年模式"——用 NOT IN 清扫垃圾信息,让兴趣自然浮现。

解释
你告诉平台你不想看到的内容类型,平台根据你的选择,排除掉这些内容,只推荐其他类型的视频。这就像你在餐厅点菜时,告诉服务员你不想吃某些食材,其他的都行。


高级吃法:组合技示范

[米其林式点单]  
1. 主菜范围:IN ('科技','数码')  
2. 食材要求:NOT IN ('厂商赞助','参数推销')  

特制套餐
《高中生魔改光刻机》|《退休工程师修文物》

精髓
双重筛选 = 在B站科技区挖到宝藏UP主。

解释
你不仅告诉平台你感兴趣的领域,还排除了你不想要的内容类型。这就像你在一家米其林餐厅点餐,既选择了主菜,又对食材提出了具体要求。


为什么产品经理视此为瑞士军刀

使用场景IN案例NOT IN案例
用户运营用户ID IN (30日付费清单)推送对象 NOT IN (已流失用户)
内容安全视频 IN (优质创作者白名单)屏蔽内容 NOT IN (过审词库)
商业策略资源 IN (S级项目) → 首页强推广告位 NOT IN (会员专区)

解释
产品经理利用 INNOT IN 来精准定位用户群体,管理内容安全,制定商业策略。这就像他们手中的一把瑞士军刀,帮助他们高效地处理各种任务。


灵魂总结

💎 IN 思维 → "我只要鱼子酱和松露"  ▸ 精英主义 ▸ 内容严选 ▸ 爱优腾芒模式  💎 NOT IN 思维 → "不要葱姜蒜其他随便"  ▸ 开放包容 ▸ 过滤干扰 ▸ B抖快哲学  

⚠️ 点菜潜规则
当你说 NOT IN ('香菜') 时——
后厨可能给你芹菜(未排除项)
正如数据库不会返回 NULL 值(小心隐藏陷阱!)


点菜哲学

下次写SQL时,记住这把数据筷子
左手 IN 夹取目标,右手 NOT IN 撇去浮油,方能品出数据真味 🥢

数据查询-in

 # 简单查询 在表中某个数据在指定范围内查询  inuse DataQueryStudy;#就拿原神来举例子吧
#角色绰号create table NickName(id int primary key AUTO_INCREMENT ,name varchar(64),nickName varchar(64));#插入数据
insert into NickName values(1001,'温迪','酒蒙子');
insert into NickName (name,nickName) VALUES('温迪','卖唱的');
insert into NickName (name,nickName)values('温迪','该溜子');
insert into NickName (name,nickName)values('钟离','社会废人');
insert into NickName (name,nickName)values('雷电影','技术宅女');
insert into NickName (name,nickName)values('纳西妲','?');
insert into NickName (name,nickName)values('芙宁娜','芙导');#查询所有的数据
select *from NickName ;
#查询根据该溜子的绰号找到符合该溜子的
select *from NickName where nickName in('该溜子');select *from nickName where nickname in('该溜子','社会废人');
#通过绰号找到对应的名字 哪怕有一个字写漏了 这就是规则
select name from nickName where nickname in('该溜子','社会废人','技术宅女');
select * from nickName where nickname in('该溜子','社会废人','技术宅女');#not in 相反过来了的 
select name from nickName where nickname  not in('该溜子','社会废人','技术宅女');
#   not in  查找一个不存在  nickName : 酒蒙子 卖唱的 ?芙导
select* from nickName where nickname  not in('该溜子','社会废人','技术宅女');# not in 当然不会忽视null的值insert into NickName (name,nickName)values('‌法涅斯','天理');
#现在的第三降临者是未知的
insert into NickName (name)values('‌第三降临者');#我正向查找in 无论怎么样都不可能查找为nickName :null
select * from nickName where nickname in('该溜子','社会废人','技术宅女');
select * from nickName where nickname in('天理');#我反向查找 not in 无论怎么样都不可以查找为nickName :null
select * from nickName where nickname not in('该溜子','社会废人','技术宅女');
select * from nickName where nickname not in('天理');
select * from nickName;
update nickName set nickName=null where  nickname  in('天理');
#不能使用null 作为查询条件 除非第三降临者是法厄同嘿嘿嘿
select * from nickName where nickname in(null);
select * from nickName where nickname not in(null);

简单查询:在表中根据指定范围查询数据(使用 INNOT IN

我们将使用 原神 中的角色绰号作为例子,创建一个名为 NickName 的表,并演示如何使用 INNOT IN 操作符进行查询。

1. 创建表 NickName
USE DataQueryStudy;CREATE TABLE NickName (id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(64),nickName VARCHAR(64)
);
2. 插入数据
INSERT INTO NickName (name, nickName) VALUES
('温迪', '酒蒙子'),
('温迪', '卖唱的'),
('温迪', '该溜子'),
('钟离', '社会废人'),
('雷电影', '技术宅女'),
('纳西妲', '?'),
('芙宁娜', '芙导'),
('法涅斯', '天理');
3. 插入更多数据
-- 插入第三降临者,昵称为 NULL
INSERT INTO NickName (name) VALUES ('第三降临者');
4. 查询所有数据
SELECT * FROM NickName;

结果

idnamenickName
1001温迪酒蒙子
1002温迪卖唱的
1003温迪该溜子
1004钟离社会废人
1005雷电影技术宅女
1006纳西妲?
1007芙宁娜芙导
1008法涅斯天理
1009第三降临者NULL
5. 使用 IN 进行查询
5.1 根据绰号查找角色
SELECT * FROM NickName WHERE nickName IN ('该溜子');

结果

idnamenickName
1003温迪该溜子
5.2 根据多个绰号查找角色
SELECT * FROM NickName WHERE nickName IN ('该溜子', '社会废人');

结果

idnamenickName
1003温迪该溜子
1004钟离社会废人
5.3 通过绰号查找对应的名字(即使有一个字写漏了)
SELECT name FROM NickName WHERE nickName IN ('该溜子', '社会废人', '技术宅女');

结果

name
温迪
钟离
雷电影
5.4 获取完整的角色信息
SELECT * FROM NickName WHERE nickName IN ('该溜子', '社会废人', '技术宅女');

结果

idnamenickName
1003温迪该溜子
1004钟离社会废人
1005雷电影技术宅女
6. 使用 NOT IN 进行反向查询
6.1 查找不包含特定绰号的角色
SELECT name FROM NickName WHERE nickName NOT IN ('该溜子', '社会废人', '技术宅女');

结果

name
温迪
纳西妲
芙宁娜
法涅斯
6.2 查找 nickName 不为特定值的角色(包含 NULL
SELECT * FROM NickName WHERE nickName NOT IN ('该溜子', '社会废人', '技术宅女');

结果

idnamenickName
1001温迪酒蒙子
1002温迪卖唱的
1006纳西妲?
1007芙宁娜芙导
1008法涅斯天理
1009第三降临者NULL

注意:由于 nickNameNULL 的记录不会被包含在 NOT IN 的结果中,因为 NULL 值在 SQL 中具有特殊的处理方式。

7. 关于 NULL 值的处理
7.1 使用 IN 查询 nickNameNULL 的记录
SELECT * FROM NickName WHERE nickName IN (NULL);

结果
空集
解释:在 SQL 中,IN (NULL) 不会返回任何记录,因为 NULL 表示未知,无法与任何值进行比较。

7.2 使用 NOT IN 查询 nickName 不为 NULL 的记录
SELECT * FROM NickName WHERE nickName NOT IN (NULL);

结果
空集
解释:同样地,NOT IN (NULL) 也不会返回任何记录,因为 NULL 无法与任何值进行比较。

7.3 更新 nickNameNULL
UPDATE NickName SET nickName = NULL WHERE nickName IN ('天理');

结果
nickName'天理' 的记录的 nickName 更新为 NULL

7.4 再次查询 nickNameNULL 的记录
SELECT * FROM NickName WHERE nickName IS NULL;

结果

idnamenickName
1009第三降临者NULL

解释
要查询 nickNameNULL 的记录,必须使用 IS NULLIS NOT NULL,而不是 INNOT IN


http://www.xdnf.cn/news/11961.html

相关文章:

  • Linux容器篇、第一章_01Linux系统下 Docker 安装与镜像部署全攻略
  • StringRedisTemplete使用
  • 智能合约安全漏洞解析:从 Reentrancy 到 Integer Overflow
  • 算法训练第八天
  • 电气架构/域控制器/中央计算平台技术论坛
  • 考研系列—操作系统:冲刺笔记(4-5章)
  • 自动化测试工具playwright中文文档-------18.模拟
  • 宝塔使用docker创建n8n
  • 每日一令:Linux 极简通关指南 - 汇总
  • 树莓派超全系列教程文档--(54)如何使用rsync在计算机之间同步文件夹
  • MCPO:使用MCP工具为Open-WebUI/Ollama助力
  • 渗透测试服务如何全方位评估企业安全状况并揭示潜在缺陷?
  • SpringBoot(七) --- Redis基础
  • 在Windows11上安装 Ubuntu WSL
  • 大语言模型备案与深度合成算法备案的区别与联系
  • Rebel系列数据记录仪:智能车载数据采集专家
  • kafka命令
  • 【unity游戏开发入门到精通——通用篇】AssetBundle(AB包)和AssetBundleBrowser的使用介绍
  • 数据结构期末PTA选择汇总
  • L1-019 谁先倒 (15 分)
  • [安卓/ios辅助工具]给按键精灵脚本做一个日志悬浮窗
  • 制造业数字化转型解决方案及应用
  • rk3588开发板实现磁盘自动挂载vmware共享文件夹设置
  • C学习--内存管理
  • 2. 库的操作
  • 企业如何抵御复杂网络攻击?
  • Delphi用if else实现 select case、switch语句功能,实现case 以字符串为分类条件。
  • Java对象创建过程
  • 操作系统入门:核心概念与设计逻辑
  • 数字孪生在智能制造中的实践:某汽车总装车间的全流程仿真优化