A表:
ha dhm rq sj sc
13705431574 15128152676 2010-04-01 20:48:32 412
13705431574 0871669977 2010-04-01 03:10:49 20
13705431574 15883217969 2010-04-01 14:34:15 118B表:
hd gsd
1512815 河北石家庄移动
1512815 河北石家庄
1588321 四川资阳移动
C表:
hm jz dz
15128152676 aa ab
15883217969 bb bc
0871669977 cc cc
0871669977 cc ccd
15883217969 bc bbcselect * 
from a  
left join b on
 substr(hm,1,7)=b.hd
left join C on
c.hm=a..hm
最后发现有重复数据不需要重复的我准备把B表整理数据库,消掉重复的数据,这样可以避免重复
最后需要得到的表是这个格式:
Hm dhm gsd jz dz rq sj sc

解决方案 »

  1.   

    给你个去重复数据的方法把,具体的你自己去操作。
    delete from table1 t1 where exists (select 1 from table2 t2 where t1.id = t2.id and t1.rowid > t2.rowid);ti.id = t2.id 这里的id指的是你通过哪个字段做为评定此条数据为重复数据的字段。
      

  2.   


    查找出重复项,然后依靠rowid只保留一个,从而删除重复
      

  3.   

    rowid是oracle的一个特性,它是和索引绑定在一起的,所以排重用rowid的性能是最高的。若1楼的看不懂,看看我这条是不是简单一点:delete from products a
     where a.rowid > (select min(b.rowid)
                         from products b
                        where a.product_id = b.product_id);用到了内连接和rowid。
      

  4.   

    select 1 from table2 t2 where t1.id = t2.id and t1.rowid > t2.rowid就是这句没有明白,select 1 from table2这句中的1 是什么意思?
      

  5.   


    exists 是用来判断后面的查询是否存在的,它的值就是true或false,所以它并不关心后面查出来的是什么数据。这样的话,为了提高性能select后加一个任意的数字性能会比查询某个字段要高。
      

  6.   

    在网上搜搜oracle 中exists的用法看看就明白了