withrecursive则是一个递归的查询子句,他会把查询出来的结果再次代入到查询子句中继续查询。withrecursived(n,fact)as(values(1,2)unionall#合并selectn+1,(n+1)*factfromdwheren5)SELECT*fromd;递归过程如下:n=1fact=2n=1,nn=2,nn=3,nn=4,nn=5n>=5==stopwithrecursived(n,fact)as(values(1,2)unionallselectn+2,(n+1)*factfromdwheren5)SELECT*fromd;递归过程如下:n=1fact=2n=