码字定式之SQL(7)

With 子句从 oracle 9i 开始支持
  1. --不用connect by,只用dual表,构造出1128
  2. with a as (select 1 from dual union all select 1 from dual)
  3. select rownum from a, a, a, a, a, a, a;
  4. --做一个5*5的乘法表
  5. with multiplier as (select rownum n from dual connect by rownum<6)
  6. select a.n||‘*‘||b.n||‘=‘||(a.n*b.n) from multiplier a, multiplier b;
对于第二条 sql 用到了 connect by ,现在只要知其然就可以了,不需要知其所以然。如果你有颗勇敢的心,可以问度娘。估计需要一到两天摸清里面的变化。
另外值得一提的是,这种写法在不同数据库的支持情况是不同的,最好不要嵌套,虽然在11g里没问题,但是在9i 和 10g就难说了。
嵌套是指类似 :
with a as
下面看一到用sql解的应用题
池塘边上有牛和鹅若干,小华总共看到15个头42条腿,请问牛和鹅各有多少? 
 




郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。