题目:使用SQL产生1-1000的连续数值,不借助其他表
结果如下:
12345... 1000
思路:不借助其他表,也就不能采用join方式产生笛卡尔积,其实我们可以想到用lateral view展开,这就就能展开N行,有了这个想法,我们就可以开始写SQL了
解法一:lateral view+posexplode组合,这种方式在前面的文章已经介绍多次
https://developer.aliyun.com/article/787123?spm=a2c6h.13148508.setting.27.36354f0ebKT1cl
--MaxComputer测试环境selectstart+pos as id from(select1as start,1000as end ) m lateral view posexplode(split(repeat(',s',end-start),',')) t as pos, val;id 1234567891011... 1000
解法二:lateral view+explode组合
--MaxComputer测试环境select row_number() over()as id from(select split(repeat(',s',999),',')as x )m lateral view explode(x) ex as tt;id 1234567891011... 1000
当然实现的方法有很多,欢迎大家交流
拜了个拜