同一个会话中执行的是什么意思啊?
我就是先敲上第一个,然后敲上第二个,结果就是不相同啊,我没有commit;

解决方案 »

  1.   

    第二句,是查询大于表11中name相同的id中最小值的表的记录。
    第一句则是查询在表11中查询name相同记录中大于最小id的记录。
    不知清楚没有
      

  2.   

    晕..我怎么不能发贴啊..我急啊..
    只好借这个地方了..问下这个问题
    关于修改临时表数据结构的问题向一张临时表中添加一个新字段;
    提示ORA-14450:试图访问已经在使用的事务处理临时表,
    如果在不重启ORACLE的前提下添加该字段;
    可以确保可能访问到该表的修改,删除等等操作都已经退出 
      

  3.   

    第一句是从11中取一条记录就和11中的所有记录比一次来重复的记录,ID为2和5的记录。
    第二句是先运行:select min(m.rowid) from ll m,ll n where m.name=n.name,因为你自关联,它出来的始终只有一条记录,即11表中最小的ROWID,这样你的整条语句就是取11表中在于这个ROWID的所的记录,ID为2、3、4、5的记录
      

  4.   

    第一句相当于
    select a.* from ll a,(select min(rowid) no,name from ll group by name) b
    where a.rowid>b.no and a.name=b.name;第二句相当于
    select * from ll where rowid>(select min(rowid) from ll);至于细节的问题,自己慢慢领会,应该能想通的
      

  5.   

    to  soniczck(城市农作物) ( ) 
    谢谢了先!
    为什么会出现这种情况啊?为什么第一句是从ll中取一条记录就和ll中的所有记录比啊?
    第二句的解释还是不太清楚,为什么第二句是自关联,而第一句不是呐?能给点详细的资料吗?谢谢了
      

  6.   

    你问为什么?因为你那两句写的就是这个逻辑,你说为什么阿?呵呵。
    在解释就是第二句中select min(m.rowid) from ll m,ll n where m.name=n.name中的m,n相当于局部变量。而第一句select * from ll where ll.rowid>(select min(rowid) from ll m where ll.name=m.name);中的11相当于全局变量,m相当于局部变量。不知这样你能否明白?当然这个比喻也不是很恰当
      

  7.   

    你的第一句和第二句当然是都进行自关联了,关于自关联的定义。
    sql中的()相当于程序中的{}。除sql函数外.
      

  8.   

    1:select * from ll where ll.rowid>(select min(rowid) from ll m where ll.name=m.name);
    2:select * from ll where ll.rowid>(select min(m.rowid) from ll m,ll n where m.name=n.name)
     第一条语句 是用的相关查询。作用是查出相同的name值的那些rowid不是最小的那些
     第二条语句,自连接其实没用处,作用是查出ll表rowid不是最小的那些记录
      

  9.   

    select id,t.name
    from l1 t, 
    (select count(*) num ,name 
    from l1 
    group by name) a 
    where a.name = t.name
      and a.num > 1