这个要结合具体表数据来分析???
1句:是把所有的数据查出,然后再判断;
用HAVING 语句时,当数据很多时,而要求选出的数据很少时
效率不高!!!!
2句:是把(符合条件的ROWID最大的那条数据)去掉查出的数据;

解决方案 »

  1.   

    SELECT * FROM EM5_PIPE_PREFAB
      WHERE ROWID!=(SELECT MAX(ROWID) FROM EM5_PIPE_PREFAB D --D相当于First,Second
      WHERE EM5_PIPE_PREFAB.DRAWING=D.DRAWING AND
      EM5_PIPE_PREFAB.DSNO=D.DSNO);
    分成两步看就明白了
    1 SELECT MAX(ROWID) FROM EM5_PIPE_PREFAB D --D相当于First,Second
      WHERE EM5_PIPE_PREFAB.DRAWING=D.DRAWING AND
      EM5_PIPE_PREFAB.DSNO=D.DSNO
    2 ROWID!=
      

  2.   

    在pl/sql里执行一把就看到执行一次耗时的数据了。
      

  3.   

    --------------------------------------------------------------
    您好,我们是“2006中国杰出数据库工程师评选”活动组委会。
    您的帖子已经被我们转载到本次评选官方网站的“专家在线答疑”区。
    http://www.bestdba.cn/match_discussion.aspx在那里,进入本次评选复选的90位数据库工程师将与您展开积极的互动。
    一方面,他们会为您的问题提供满意的答案,
    另一方面,也邀请您为他们投上宝贵的选票。2006-7-8 ~ 2006-7-25日,每天我们将从当天参与"有奖投票"的网友
    中抽取3名幸运者,赠送由IBM提供的精美礼品一份!此外,您还可以在“专家在线答疑”区提出新的问题并参与讨论。您的帖子位于:
    http://www.bestdba.cn/match_discussion3.aspx?pointid=231&pointid2=1&pointid3=5&pcount=stc非常感谢您对本次活动的支持!
    --------------------------------------------------------------
      

  4.   

    邹建
    注册日期: Jul,2006 
    发贴数: 0  两个语句产生的效果不完全一样 
    第1个语句的结果集的列是有限制的 
    而第2个语句的结果集的列是可以没有限制的 严格来说, 不宜比较结果不同的两个查询(它们的可比性不好) 
      

  5.   

    王忠海
    注册日期: Jul,2006 
    发贴数: 2  这根本不是相同的结果的语句,有什么可比较性呢? 
      

  6.   

    知道ROWID的含义就知道它的作用了。