rowid的问题,为什么同一句sql在不同的数据库结果不一样?
两个关联的表有多条同样的记录,我只需要取出相同记录中的一条,在其中一台数据库,我的sql语句如下 
 select   *   from   contract   a   where   a.rowid    <   (select   max(b.rowid)   from      rbs.contract   a,   contract_billing   b   where   a.contract_num   =   b.contract_num   and   to_char(b.BILLING_DATE,    'yyyy ')   =    '2006 ') 
 其实在同一台机以下写法也能得出同样的结果 
 select   *   from   contract   a   where   a.rowid    <   (select   min(b.rowid)   from      rbs.contract   a,   contract_billing   b   where   a.contract_num   =   b.contract_num   and   to_char(b.BILLING_DATE,    'yyyy ')   =    '2006 ')   
 但在另一台数据库,以上写法搜不出任何记录,如果改成下面这样就可以 
 select   *   from   contract   a   where   a.rowid   >    (select   min(b.rowid)   from      rbs.contract   a,   contract_billing   b   where   a.contract_num   =   b.contract_num   and   to_char(b.BILLING_DATE,    'yyyy ')   =    '2006 ') 
 在这台数据库,下面的写法结果也是一样的 
 select   *   from   contract   a   where   a.rowid   >    (select   max(b.rowid)   from      rbs.contract   a,   contract_billing   b   where   a.contract_num   =   b.contract_num   and   to_char(b.BILLING_DATE,    'yyyy ')   =    '2006 ')   
 请问这事怎么回事?谢谢.   
------解决方案--------------------有一个数据库的数据是从另一个数据库导过来的吧?rowid是oracle自动生成的一个字段,是跟生成(导入)数据的先后顺序有关的。你应该用你自己生成的主键字段(row_id).
------解决方案--------------------同意楼上的