lstd.net
当前位置:首页 >> 如何用SQL语句实现在一个表中删除掉另一个表中相同的数据行 >>

如何用SQL语句实现在一个表中删除掉另一个表中相同的数据行

这个可以用递归函数写,sql server 应该是在2005以后才有这个函数.或者说导出为excel,处理完成后再导入进去.

1、首先这是user_a表的数据,如下:2、然后这是另一张user_b表的数据,如下:3、然后输入下方的查询语句,如下:SELECT user_a.`user`,Sum(user_a.money),Count(user_a.`user`) FROM user_a GROUP BY user_a.`user` HAVING user_a.`user` NOT IN ((select user from user_b group by user))4、然后运行之后,运行结果,如下图

delete from T where T.rowid!=(select max(rowid) from T t where student.A=t.A and student.B=t.B and student.C=t.C);

两种方式,一种是用嵌套,一个是关联.嵌套:如表1有如下数据 id name1 张三2 李四3 王五 表2有如下数据 id12 现在要删除表1中含有表2中id的数据,可用以下语句:delete from 表1 where id in (select id from 表2) 关联:如表1有如下数据 id name1 张三2 李四3 王五 表2有如下数据 id name1 张三2 哈哈 现在要删除表1中id和name同时等于表2中id和name的数据,可用以下语句:delete from 表1 where exists (select 1 from 表2 where 表1.id=表2.id and 表1.name=表2.name);

先删子表,再删主表.

查询重复 select [需要排重的列名] from 表名 group by [需要排重的列名] having count(1)>1删除重复 delete from 表名 where [id自增列] in ( select [id自增列] from 表名 a where [需要排重的列名] in ( select [需要排重的列名] from 表名 b where a.id自增列 >= b.id自增列 group by [需要排重的列名] having count(1)>1 ) )删除的时候注意,里面的[表名]针对的是同一张表,此表最好有一个自增列

可以给你个想法,把不重复的多出来放到一个临时表中,删除原表,再将临时表的数据插入原表

ms没那么难.比如一个表A1,结构如下:id name------------------------1 A2 A3 B4 C5 C6 D delete A1 where id not in(select min(id) from A1 group by name)就可以删掉name字段重复的记录.

如果是删除单个字段重复可用in,如果是删除多个字段重复可用exists.如表1数据:id name age1 张三 192 李四 203 王五 174 赵六 21 表2数据:id name age1 张三 192 李四 215 王五 14 如果删除表1中id和表2相同的内容:delete from 表1 where id in (select id from 表2)如果删除表1中id,name和age都与表2相同的数据 delete from 表1 where exists (select 1 from 表2 where 表1.id=表2.id and 表1.name=表2.name and 表1.age=表2.age)

两种方式,一种是用嵌套,一个是关联.嵌套:如表1有如下数据id name1 张三2 李四3 王五表2有如下数据id1

相关文档
qwfc.net | 9213.net | ppcq.net | xyjl.net | dzrs.net | 网站首页 | 网站地图
All rights reserved Powered by www.lstd.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com