MySQL 8.0新特性,CTE Recurive(二)

  

mysql> WITH  RECURSIVE  cte    ,,,,,(   ,,,,,,,SELECT  1, AS  n, & # 39; abc # 39; AS  str   ,,,,,,UNION 所有   ,,,,,,,SELECT  n  +, 1, CONCAT (str, str),得到cte  WHERE  n  & lt; 3   ,,,,,)   ,,,,,SELECT  *,得到cte;   ERROR  1406, (22001):, Data  too  long  for  column  & # 39; str # 39; at  row  1      mysql> WITH  RECURSIVE  cte    ,,,,,(   ,,,,,,,SELECT  1, AS  n,,演员(& # 39;abc # 39;, AS  CHAR (20)), AS  str   ,,,,,,UNION 所有   ,,,,,,,SELECT  n  +, 1, CONCAT (str, str),得到cte  WHERE  n  & lt; 3   ,,,,,)   ,,,,,SELECT  *,得到cte;   + - - - - - - - - - - - - - - - - - - - - - - +   |,n ,,, |, str ,,,,,,,, |   + - - - - - - - - - - - - - - - - - - - - - - +   |,,,,1,|,abc ,,,,,,,, |   |,,,,2,|,abcabc ,,,,, |   |,,,,3,|,abcabcabcabc  |   + - - - - - - - - - - - - - - - - - - - - - - +   3,rows  set 拷贝;(0.00,sec)


当调用cte为1001次的时候,查询报的错   mysql>, WITH  RECURSIVE  cte  (n),   ,,,,,(   ,,,,,,,SELECT  1   ,,,,,,UNION 所有   ,,,,,,,SELECT  n  +, 1,得到cte  where  n<1001   ,,,,,)   ,,,,,SELECT  *,得到cte;   ERROR  3636, (HY000):, Recursive  query  aborted  after  1001年,迭代只Try  increasing  @@cte_max_recursion_depth 用a  larger 价值。

把参数设置为5 s,执行超时并报错:   mysql>, SET  max_execution_time =, 5000;,, # 5 s   Query 好吧,,0,rows  affected (0.00,秒)   mysql>, select  s。*,得到salaries  s  where  s.emp_no 拷贝(select  emp_no 得到employees  e  where  e.first_name=& # 39;格奥尔基# 39;,union  all  select  emp_no 得到employees  e  where  e.hire_date=& # 39; 1992 - 12 - 18 & # 39;);   ERROR  3024, (HY000):, Query  execution  was 中断,,maximum  statement  execution  time 超过      把参数设置为50年代,执行成功:   SET  max_execution_time =, 50000;   mysql>, select  s。*,得到salaries  s  where  s.emp_no 拷贝(select  emp_no 得到employees  e  where  e.first_name=& # 39;格奥尔基# 39;,union  all  select  emp_no 得到employees  e  where  e.hire_date=& # 39; 1992 - 12 - 18 & # 39;);   2718年,rows  set 拷贝;(21.70,sec)


mysql>, WITH  RECURSIVE  fibonacci  (n, fib_n,, next_fib_n),   ,,,,,(   ,,,,,,,SELECT  1, 0, 1   ,,,,,,UNION 所有   ,,,,,,,SELECT  n  +, 1,,,, next_fib_n fib_n  + next_fib_n   ,,,,,,,,,得到fibonacci  WHERE  n  & lt; 10   ,,,,,)   ,,,,,SELECT  *,得到斐波那契;   + - - - + - - - - - - - - - - - - - - - - - - - +   |,n ,,, |, fib_n  | next_fib_n  |   + - - - + - - - - - - - - - - - - - - - - - - - +   |,,,,1,|,,,,,0,|,,,,,,,,,,1 |   |,,,,2,|,,,,,1,|,,,,,,,,,,1 |   |,,,,3,|,,,,,1,|,,,,,,,,,,2 |   |,,,,4,|,,,,,2,|,,,,,,,,,,3 |   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

MySQL 8.0新特性,CTE Recurive(二)