【求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不知道我说清楚了没有?谢谢大家!
有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不知道我说清楚了没有?谢谢大家!
我这个思路对不对?具体实现起来怎么操作,还请大家指导!
谢谢!
把ANSWER表的外键设为级联删除,然后
delete from QUESTION a where a.rowid not in
(select max(b.rowid) from QUESTION b where a.url=b.url);
搞定
(select rowid
from(
select rowid,id,question,url,row_number() over(partition by url order by rowid) rn
from question) where rn=1)
表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);
不要用游标和过程,用sql语句就可以解决问题如7楼
create table temp as select distinct * from A;
truncate table A;
insert into A as select * from temp;
drop table temp;