【求sql语句】删除表中重复的记录。
有2个表,如下:
表1:QUESTION(ID,question,url)     ps:ID为主键。
表2:ANSWER(ID,answer,questionID)  ps:ID为主键,questionID是外键,对应表QUESTION的ID。我将重复的url删除掉,只留下一个就可以了。比如下面的例子。
原来的数据:
表1QUESTION:
1  刘德华多大?  www.baidu.com/liudehua
2  郭富城身高?  www.baidu.com/guofucheng
3  刘德华多大?  www.baidu.com/liudehua
表2ANSWER:
1  50左右  1
2  170cm  2
3  50左右  3有与刘德华的那个url出现了两次,那么需要删掉一个,只留下一个就可以了。
删除后的数据:
表1QUESTION:
1  刘德华多大?  www.baidu.com/liudehua
2  郭富城身高?  www.baidu.com/guofucheng
表2ANSWER:
1  50左右  1
2  170cm  2不知道我说清楚了没有?谢谢大家!

解决方案 »

  1.   

    其实关键是选出这些重复的url所在元组的ID,然后在这些id里只留下一个,其余的都删掉。
    我这个思路对不对?具体实现起来怎么操作,还请大家指导!
    谢谢!
      

  2.   


    把ANSWER表的外键设为级联删除,然后
    delete from QUESTION a where a.rowid not in 
    (select max(b.rowid) from QUESTION b where a.url=b.url);
    搞定
      

  3.   

    QUESTION(ID,question,url) delete question where rowid not in
    (select rowid
    from(
    select rowid,id,question,url,row_number() over(partition by url order by rowid) rn
    from question) where  rn=1)
      

  4.   


    表1:QUESTION(ID,question,url)  
    表2:ANSWER(ID,answer,questionID)delete from QUESTION a
    where  exists(select 1 from QUESTION b where a.url=b.urland a.ID>b.ID);delete from answer where id not in (select id from question);
      

  5.   


    不要用游标和过程,用sql语句就可以解决问题如7楼
      

  6.   

    drop table temp;
    create table temp as select distinct * from A;
    truncate table A;
    insert into A as select * from temp;
    drop table temp;