在函数处理中嵌套使用笛卡尔积的用法

韭菜盒子123 2022-11-17 15:22:10
		select 
			a.编号
			,a.编码
			,a.年度
			,count(*) 级别
			,len(编码) - isnull(
				(select max(len([父级编码]))
				from 层级表 b
				where a.编码 = b.编码 and a.编号=b.编号
				and a.编码 <> b.父级编码
				) ,0) 本级长度

		from 层级表 a
		
		group by a.编号,a.年度,a.编码

这一句,在取本级长度字段时,isnull 函数里嵌套了一次子查询

这里很明显是出现了一次a表和b表的笛卡尔积

是这样函数中嵌套的写法里会固定出现吗

如果这样的话,单纯的嵌套查询为什么没有笛卡尔积呢

...全文
160 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
炎同学要努力 2023-06-09
  • 打赏
  • 举报
回复

学习了

韭菜盒子123 2022-11-22
  • 打赏
  • 举报
回复

看懂了,这个挺神奇的,是一个局部的表关联。只在那个函数括号里有效

幸福感奇差 2022-11-18
  • 打赏
  • 举报
回复

因为有个 max

34,587

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧