select h.* from (select b,*,rownum rn from (select t.* ,b.* from emp t,
dept b where t.deptno = b.deptno) b where rownum <=5) h where rownum>=1;
b.*列定义不明确,难道真的要每个字段每个字段的写?b.name,b.deptno.....b....
求高手有没有好方法?

解决方案 »

  1.   

    以为emp 和dept 表都有 deptno 字段
    直接用*,导致deptno字段重复刚入门就想着偷懒,不是好事,还是一个个敲吧 
    入门用的表都是字段很少的,才几个字段
    等你在工作中遇到几百个字段,才明白用*的恶心
    效率低
    代码给人看,根本不知表里有什么字段
      

  2.   

    不好意思各位,我的那个语句弄错了,是这样的。select h.* from (select a.*,rownum rn from (select t.* ,b.* from emp t,
    dept b where t.deptno = b.deptno) a where rownum <=5) h where rownum>=1;
    这样还会导致deptno重复吗?我查询的是2个表deptno相同的所有的字段,还有t.*,b.*这样查询会出什么问题?(也就是用表名+.*)能举个例子吗
      

  3.   


    (select t.* ,b.* from emp t,
    dept b where t.deptno = b.deptno) b 
    最后一个b改成c
      

  4.   

    用* 可不是个好习惯,在实际工作中,有些公司有明确规定,在正式的程序中严禁用*,这个软解析的相对来说时间太长,
    insert into table_a
    select * from table_b
    哪天你的table_b的字段增加或减少了,这个就是个bug ,或者说上面的那个就是个潜在的bug,一个地雷,所不准哪天就轰隆一下,结果,你的钞票被项目经理给咔嚓了