with t as (select level as n from dual connect by level <=9)
select sys_connect_by_path(b.n || '*' || a.n || '=' || a.n * b.n, ' ') as 九九乘法表
from t a, t b
where a.n >= b.n and level = a.n
start with b.n=1
connect by a.n=prior a.n and b.n=prior b.n+1;
绝吧?用到了不少东东:WITH、sys_connect_by_path, start with ... connect by ...
执行结果:
SQL> with t as (select level as n from dual connect by level <=9)
2 select sys_connect_by_path(b.n || '*' || a.n || '=' || a.n * b.n, ' ') as 九九乘法表
3 from t a, t b
4 where a.n >= b.n and level = a.n
5 start with b.n=1
6 connect by a.n=prior a.n and b.n=prior b.n+1;
九九乘法表
--------------------------------------------------------------------------------
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
9 rows selected
SQL> 
本文介绍了一种使用SQL查询生成九九乘法表的方法,通过WITH子句、sys_connect_by_path函数等高级特性实现。具体展示了如何通过层级递归查询(CONNECT BY)构建有序的乘法表达式。
463

被折叠的 条评论
为什么被折叠?



