【和sql对比】针对子表查询 | 润乾 -九游会登陆
列出员工的首份工作公司
sql解法
用多表连接
select 姓名,公司 首份工作公司 from (select 员工.姓名 姓名,履历表.公司 公司, row_number() over(partition by 履历表.姓名 order by 履历表.开始日期) 工作序号 from 员工表,履历表 where 员工表.姓名=履历表.姓名) where 工作序号=1
用子查询
select 姓名, (select 公司 from 履历表 where 姓名=a.姓名 and 开始日期=(select min(开始日期) from 履历表 where 姓名=a.姓名)) 首份工作公司 from 员工表 a
sql不能将子表记录集合作为主表的属性(字段)处理,针对子表的查询要么转成多表连接,要么采用子查询每次临时计算子表,书写复杂且计算低效。
spl解法
a | |
1 | =demo.query(“select * from 员工表”).new(姓名,履历.minp(开始日期).公司:首份工作公司) |
spl支持将子表集合作为主表字段,就如同访问其它字段一样,子表无需重复计算。