【和SQL对比】针对子表查询

列出员工的首份工作公司
用多表连接

1 select 姓名,公司 首份工作公司
2 from (select 员工.姓名 姓名,履历表.公司 公司,
3          row_number() over(partition by 履历表.姓名
4                 order by 履历表.开始日期) 工作序号
5       from 员工表,履历表 WHERE 员工表.姓名=履历表.姓名)
6 where 工作序号=1

用子查询

1 select 姓名,
2     (select 公司 from 履历表
3      where 姓名=A.姓名 and
4            开始日期=(select min(开始日期) from 履历表
5                     where 姓名=A.姓名)) 首份工作公司
6 from 员工表 A

SQL不能将子表记录集合作为主表的属性(字段)处理,针对子表的查询要么转成多表连接,要么采用子查询每次临时计算子表,书写复杂且计算低效。

A
1 =demo.query(“select * from 员工表”).new(姓名,履历.minp(开始日期).公司:首份工作公司)

集算器支持将子表集合作为主表字段,就如同访问其它字段一样,子表无需重复计算。