首页 > 代码库 > 码字定式之SQL(7)

码字定式之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条腿,请问牛和鹅各有多少? 
 


来自为知笔记(Wiz)


码字定式之SQL(7)