首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

NOT IN子查询中出现NULL结果影响你注意到了吗

exists查询被称之为反连接,经常会有技术人员来评论in 与exists 效率孰高孰低问题,我在SQL优化工作中也经常这类子查询做优化改写,比如半连接改为内连接,反连接改为外连接等,哪个效率高是要根据执行计划做出判断...t2 where t2.c2=t1.c2); 这两个语句,从表达含义来看是等价,都是查询t1表中c2在t2表c2中不存在记录。...NULL记录后,结果集会怎样呢,两个表都存在c2为NULL数据,那么t1表这条NULL数据能否出现在最终结果集中呢?...NULL记录,关联后结果NULL记录关联是以笛卡尔积形式体现,严重影响效率,严格来说关联字段都为NULL不能算作能匹配上。...结论 使用not in 非关联子查询注意NULL结果影响,为避免出现空结果集,需要子查询查询加 is not null条件将NULL去除。

7510
您找到你想要的搜索结果了吗?
是的
没有找到

全栈必备之SQL简明手册

SQL语句可以根据用户需要进行组合和嵌套,以实现复杂查询和操作。 声明式编程:采用声明式编程范式,用户只需指定所需结果,而无需指定如何获得这些结果。...where 条件 求和/平均值:select sum/average(字段名) as 定义别名 from table_name where 条件 求极值:select max/min(字段名) as...这些连接类型允许用户根据不同求和数据关系选择适当连接方式。 在使用JOIN时,用户可以指定需要选择,并应用筛选条件,以进一步细化查询结果。这样可以确保只返回感兴趣数据,并提高查询效率。...重复处理:UNION操作中,默认会删除重复结果行,只保留唯一行。如果需要包含重复行,可以使用UNION ALL操作。...视图是虚拟,它不存储实际数据,只是底层表查询结果引用。视图提供了一种安全机制,因为用户只能通过视图访问特定数据,而不能直接访问底层表。

27310

【Java 进阶篇】深入理解SQL查询语言(DQL)

组合数据:将多个表数据合并在一起,以获得更复杂结果。 计算数据:结果进行计算,例如求和、平均值等。 SQL查询通常以SELECT语句开始,然后使用其他子句来进一步指定操作。...; 在这个查询中,我们从名为employees表中选择first_name和last_name,仅选择department等于’HR’行,然后按last_name结果进行排序。...计算数据 - 使用聚合函数 聚合函数允许您对数据进行计算,如求和、平均值、最大和最小等。以下是一些常见聚合函数: COUNT():计算行数。 SUM():计算总和。...AVG():计算平均值。 MAX():找到最大。 MIN():找到最小。...子查询:子查询是嵌套在其他查询内部查询,它可以用于从一个查询中检索数据,并将其用作另一个查询条件。

23720

【数据库设计和SQL基础语法】--连接与联接--多表查询与子查询基础(二)

返回结果: 子查询通常返回一个结果集,这个结果集可以是一个、一、一行或者多行多。 用途: 子查询主要用途之一是在一个查询中使用另一个查询结果。...这样可以在较复杂查询中进行逻辑判断、过滤数据或进行计算。 类型: 子查询可以分为单行子查询和多行子查询。单行子查询返回一行一结果,而多行子查询返回多行多结果。...子查询在 SQL 查询语言中应用非常灵活,可以根据具体业务需求和数据结构进行定制。...虽然索引性能有很多好处,但过度创建索引也可能导致一些问题,比如增加写操作开销、占用更多磁盘空间等。因此,在设计数据库时,需要根据具体查询求和操作模式谨慎选择创建索引。...了解这些不同类型 JOIN 如何工作,以及它们之间区别是非常重要根据实际需求选择适当 JOIN 类型。

25810

mysql基本命令

(null 不计) -- sum: 求和 -- max: 最大 -- min: 最小 -- avg: 平均值 -- ===count,求和,指定[数据个数]求和 count(列名).就是看该列有多少条数据...'a'默认为函数名,在此处也就是count(*),可以进行修改↑; -- ===sum,求和,指定[数据]求和 sum(列名),就是看该中所有相加和. select sum(列名) from...表名; -- 注意:类型:汉字不能求和;若有汉字,按0计算,不是数据类型数据,计0运算. -- 可以与条件查询结合↓ (查询2中所有包含'张三'字段,并求出其中所有1和). select...-- $分组查询(关键字:group by) -- 跟随聚合函数使用:group by(被分组列名); -- select查询时,被分组要出现在select选择后面; -- ↓按照2相同内容...2中'张三'内容1进行求和并按降序显示且只显示 sum(1) 大于18内容; -- $分组查询:(关键词:limit x,y) -- x:表示从第几行开始显示(不包括x行,x为0时,可省略不写

1.5K20

图解面试题:累计求和问题如何分析?

【解题步骤】 1.先筛选出当前员工( 结束日期 = '9999-01-01')薪水 select 雇员编号,薪水from 薪水表where 结束日期 = '9999-01-01'; 查询结果 2.什么是累计薪水...select 雇员编号,薪水,sum(薪水) over (order by 雇员编号) as 累计薪水from 薪水表where 结束日期 = '9999-01-01'; 查询结果 (2)方法2,用自联结...如计算左边雇员编号10002累计薪水则需用到右边雇员编号(1)中10001和10002两人的当前薪水,且需要满足右边雇员编号(1)<=左边雇员编号 根据左边雇员编号和薪水分组,再右边薪水(1)...avg(列名) over (order by ) 所以,我们可以得出“累计求和”问题万能模板是: select 1,2,sum(列名) over (partition by <用于分组列名...参考答案: select 日期,确诊人数,sum(确诊人数) over (order by 日期) as 累计确诊人数from 确诊人数表; 查询结果 如何从零学会sql?

1.1K20

游戏行业实战案例4:在线时长分析

根据题意,“登录日志”表中登录时间不存在缺失,而“登出日志”表中某个玩家登出时间可能存在缺失,为了在联结时候完整保留登录登出时间,将上述查询结果1设为临时表a,查询结果2设为临时表b,并让临时表...也就是说,若玩家登录后没有对应登出日志,则进行左联结后“登出时间”这一会存在空,而空可以使用当天23:59:59进行填充。 如何实现这一操作呢?...当天即为“日期”,因此我们可以将“日期”与23:59:59进行合并得到当天23:59:59。...根据题意,“登录日志”表中登录时间不存在缺失,而“登出日志”表中某个玩家登出时间可能存在缺失,为了在联结时候完整保留登录登出时间,将上述查询结果1设为临时表a,查询结果2设为临时表b,并让临时表...也就是说,若玩家登录后没有对应登出日志,则进行左联结后“登出时间”这一会存在空,而空可以使用当天23:59:59进行填充。 如何实现这一操作呢?

3.8K30

给数据开发SQL面试准备路径!⛵

图片对于 SQL 更详尽内容,欢迎大家查阅ShowMeAI制作速查表,快学快用:编程语言速查表 | SQL 速查表 学习计划 第1天:选择和过滤这个板块主要针对 SQL SELECT语句,掌握使用它从一个或多个表中选择字段...SQL中UNION函数将两个或多个 select 语句结果集组合成一个结果。SQL UNION ALL函数保留重复行。...Products Table 第3天:分组聚合SQL中GROUP BY语句根据或多行进行分组,每组返回一行。...第6天:子查询SQL 子查询是嵌套在另一个查询查询,我们可以把一个查询结果,用到另一个查询中。...第9天:分析函数SQL中FIRST_VALUE()和 LAST_VALUE()分析函数分别返回一组有序第一个和最后一个;LAG()窗口函数提供前一行或多行数据访问;LEAD()窗口函数提供下一行或多行数据访问

4K144

常见SQL知识点总结,建议收藏!

根据面试官是否希望结果中包含毕业生,我们需要使用LEFT JOIN或 INNER JOIN来组合两个表: WITH class_count AS ( SELECT student_id, COUNT...如果在一个 SQL 问题中看到诸如求和、平均值、最小或最大之类关键字,这就表明你可能应该在查询中使用GROUP BY了。...**LAG/LEAD:**它根据指定顺序和分区组从前一行或后一行检索。 在SQL面试中,重要是要了解排名函数之间差异,并知道何时使用LAG/LEAD。...此外,根据关系处理方式,我们可以选择其他排名函数。同样,细节是很重要! ROW_NUMBER,RANK,DENSE_RANK结果比较 06 重复项 SQL面试中另一个常见陷阱是忽略数据重复。...例如:你可以谈论问题和数据理解,说明你计划如何解决问题,为什么使用某些函数而不是其他选项,以及正在考虑哪些极端情况。

9410

数据库sql面试需要准备哪些?

如果在一个 SQL 问题中看到诸如求和、平均值、最小或最大之类关键字,这就表明你可能应该在查询中使用 GROUP BY 了。...LAG / LEAD :它根据指定顺序和分区组从前一行或后一行检索。 在 SQL 面试中,重要是要了解排名函数之间差异,并知道何时使用 LAG/LEAD。...以下查询恰好能找到 3 名薪水最高员工,而不论他们关系如何: 复制代码 WITH T AS ( SELECT *, ROW_NUMBER() OVER (PARTITION BY...重复项 SQL 面试中另一个常见陷阱是忽略数据重复。尽管样本数据中某些似乎具有不同,但面试官还是希望候选人考虑所有可能性,就像他们在处理真实数据集一样。...例如,你可以谈论问题和数据理解,说明你计划如何解决问题,为什么使用某些函数而不是其他选项,以及正在考虑哪些极端情况。 总结 首先要提问,收集所需细节。

1.4K20

【云原生进阶之数据库技术】第一章MySQL-2.3-数据基本操作

1.1.3 order by子句 可以使用order by子句查询结果安装一个或多个属性(多个属性逗号隔开)升序(ASC)或降序(DESC)排列,默认为升序。...--查询结果按照bookPrice降序排列 select * from books order by bookPrice desc; 1.1.4 聚集函数 某一组数据进行操作(在...平均值 max 最大 min 最小 例: #查询book表中年龄最大 select max(age) from book; 1.1.5 分组函数 将查询结果按某一或多分组...limit {[offset,]row_count | row_count OFFSET offset} 7 ## 查询 1.2 连接查询 根据两个表或多个表之间关系来查询数据,...将一个查询块嵌套在另一个查询where子句或having短语条件中查询被称为嵌套查询

11410

游戏行业实战案例 4 :在线时长分析

那么,如何玩家登录时间、登出时间进行一一应呢? 玩家每次登录后必然伴随着登出,因此玩家登录时间顺序与登出时间顺序是一致。...by 角色id,日期 order by 登出时间 asc) as 登出排名 from 登出日志; 查询结果如下: 每个玩家每天登录登出时间进行排序后,就可以将登录登出时间进行一一应了。...根据题意,「登录日志」表中登录时间不存在缺失,而「登出日志」表中某个玩家登出时间可能存在缺失,为了在联结时候完整保留登录登出时间,将上述查询结果1设为临时表a,查询结果 2 设为临时表 b ,并让临时表...也就是说,若玩家登录后没有对应登出日志,则进行左联结后「登出时间」这一会存在空,而空可以使用当 23:59:59 进行填充。 如何实现这一操作呢?...当天即为「日期」,因此我们可以将「日期」与 23:59:59 进行合并得到当天 23:59:59 。

16710

SQL 聚合查询

聚合函数 常见聚合函数有: COUNT:计数。 SUM:求和。 AVG:求平均值。 MAX:求最大。 MIN:求最小。...MAX、MIN MAX、MIN 分别求最大与最小,上面不同时,也可以作用于字符串上,因此可以根据字母判断大小,从大到小依次对应 a-z,但即便能算,也没有实际意义且不好理解,因此不建议字符串求极值...可以看看下面两段查询结果对比: SELECT MAX(cost), id FROM test -- id: 100 SELECT SUM(cost), id FROM test -- id: 1 第一条查询可以找到最大那一行...GROUP BY a,b,c 查询结果第一可能看到许多重复 a 行,第二看到重复 b 行,但在同一个 a 内不会重复,c 在 b 行中同理。...GROUP BY + WHERE WHERE 是根据行进行条件筛选。因此 GROUP BY + WHERE 并不是在组内做筛选,而是整体做筛选。

2.4K31

MySQL(4) 数据库增删改查SQL语句(整理集合大全)

in后里面的 where not in(1,2); //不是in中指定数据 NULL查询( 注意:中值为null不能使用=去查询 ) where is null; //查询中值为...'%0%'; //表示数据中包含0 _:表示一个字符,可多次使用,示例: where like '%0_'; //数据结尾第二位是0 结果排序( 查询结果按照一或多进行升序还是降序排列...,若统计中为Null,那么count将不会计算 MAX: 统计计算最大 MIN: 统计计算最小 SUM: 统计计算求和 AVG: 统计计算平均值 分组函数( 注意:如果要对分组后数据进行筛选...多用在分类数据、省市县分类数据、权限… select 表1.字段1,表2.字段2 from 表名 as 表1,表名 as 表2 where 表1.字段1=表2.字段2 子查询:将一个查询结果作为另一个查询对象...2.字段与关键字一样,冲突时,需要给字段名加“,(Esc键下面、1左边) 3.如果给虚拟结果表中字段取了别名,则虚拟结果查询时,应该用 表别名.

2K20

【JavaWeb】62:单表查询,以及数据库总结

查询所有数据 select * from student; *即代表了所有数据意思,格式为: select * from+表名 ②查询指定信息 select name,gender from...②根据年龄、分数组合排序 多重排序,先根据前面的条件排序,再根据后面的条件排序。 2聚合函数 SQL语言中定义了部分函数,可以对查询结果进行操作,也就是聚合函数。 ?...count(score):score这一因为有一行数据为null,所以不计算在内, ②统计班上总分 sum,求和意思。 sum(score):分数这一所有的数据求和。...sum(score+age):(分数+年龄这两)所有的数据求和。 ③统计班上平均分 avg,求平均数意思,很好理解。 avg(score):分数这一求平均值。...⑤select+查询语句 这是第5步,查询出对应数据,也就是结果集。 ⑥order by+列名+desc|asc 查询语句是最后执行,所以也可以接别名。

1.3K10

SQL查询语句大全(个人总结)

文章目录 前言 之前总结 Select Select+聚合函数 总数 最大 最小 求和 平均值 Select+case…when…then语句 select+top from(表)+连接查询 from...最小 min()求此列最小 例3.求下表编号最小编号 select min(StudentID) from StudentBindPaperTypeEntity 求和 sum()求此列之和...from+left join 左外连接:左表会全部显示出来,右表显示on条件搜索结果,搜索不到为NULL 例1两个表作左外连接 select score.studentID,...>10 显示结果: Order by(排序) 排序查询语法: select * from 表名 order by 1 asc|desc [,2 asc|desc,...]...如果1相同,则按照2排序,以此类推 asc从小到大 desc从大到小 例1.根据学院分组ID降序(desc) select CollegeID from StudentBindPaperTypeEntity

1.4K10

简单增 删 改 查

一:insert语句 into 关键字是可选 values关键字前面的()是可选,这里是要接收数据 values后面,有两种方式提供 1:显式给出  2:从select语句中导出 insert...语句注意几点 1:不要理标志,系统会给你插入 2:给出实际,如果没有,那就null 3:给出默认,default关键字,告诉数据库取默认 insert into ... select 什么时候会这么用...sql先把中文转换成拼音再进行排序) 2:可以对 查询表中任何 进行排序  无论该是否包含在select列表中 3:基于多个order by         例如:order by addtime...,id       先按时间排序,再在这个基础上根据id排序,你也看到了,性能是有很大幅度降低 七:distinct关键字 select  count(distinct  column) from...我发现用group  by子句基本上都是和聚集函数一起用 举几个聚集函数例子 sum 求和 avg求平均数 min/max求最大和最小 count(表达式|*)获取一个查询行数 只说说count

49510

❤️ 爆肝3天!两万字图文 SQL 零基础入门,不怕你学不会,就怕你不收藏!❤️

SELECT查询数据 SELECT 语句用于从表中选取数据,结果被存储在一个结果表中(称为结果集)。...ORDER BY – 排序 ORDER BY 语句用于根据指定结果集进行排序,默认按照升序记录进行排序,如果您希望按照降序记录进行排序,可以使用 DESC 关键字。...注意: 实际应用时,这个 AS 可以省略,但是别名需要加上 " "。 ???? JOIN – 多表关联 JOIN 用于根据两个或多个表中之间关系,从这些表中查询数据。...如果查询结果需要显示重复,请使用 UNION ALL。...GROUP BY – 分组 GROUP BY 语句用于结合合计函数,根据一个或多个结果集进行分组。

8.3K10
领券