首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

mysql技巧:如果记录存在则更新如果存在则插入的三种处理方法

f_salary ) VALUES( '10007' , '新人' , '西安' , IF(1000 > f_salary , 1000 , f_salary)); replace into相当于,先检测该记录是否存在...(根据上的唯一键),如果存在,先delete,然后再insert。...这个方法有一个很大的问题,如果记录存在,每次执行完,主键自增id就变了(相当于重新insert了一条),对于有复杂关联的业务场景,如果主表的id变了,其它子表没做好同步,会死得很难看。...该方法,没有replace into的副作用,不会导致已存在记录的自增id变化。...但是有另外一个问题,如果这个上有不止一个唯一约束,在特定版本的mysql容易产生dead lock(死锁),见网友文章https://blog.csdn.net/pml18710973036/article

7.6K20
您找到你想要的搜索结果了吗?
是的
没有找到

SQL:删除重复的记录

select from # --清空旧表 truncate table test --将新的数据插入到旧表 insert test select from # --删除 drop table...peopleId in (select  peopleId  from  people  group  by  peopleId  having  count(peopleId) > 1)  2、删除多余的重复记录...a.peopleId,a.seq) in  (select peopleId,seq from vitae group by peopleId,seq  having count() > 1)  4、删除多余的重复记录...and rowid not in (select min(rowid) from vitae group by peopleId,seq having count()>1)  比方说在A存在一个字段...“name”,而且不同记录之间的“name”值有可能会相同,  现在就是需要查询出在该的各记录之间,“name”值存在重复的项;  Select Name,Count() From A Group

4.7K10

mysql常用功能之删除一张重复数据&aba存在b不存在的 数据

在开发,我们有可能会遇到这种情况: 1:删除一张重复数据 2:AB两张通过主键关联,删除A存在而B存在的数据。如下图: ? 这样的怎么解决? 今天遇到一个问题。...我的需求是删除多余的数据,但要保留其中一条。 定义 表明 table_a ,判断唯一的两个字段 c_1,c_2,无关字段data 中原始数据如下 ?...我的思路是:再查询一个id 字段 ,我们group by 的时候 id 字段只能查询到重复数据的一条。然后我们把这些id的数据删除,就达到了去重的效果。...可以看到有两行被删除了。这时再看看数据,数据已经变成了: ? 成功将重复的数据删除如果重复数据是三条或者更多怎么办呢?很简单,再多执行几次这个SQL 就好了。...2 内容3 7 3 内容1 8 3 内容2 9 3 内容3 现在A删除了某条记录 如何能将B删除A没有的记录.

4K40

MySQL查看数据库的重复记录删除

数据如下 查看用户名相同的记录 select * from user where username in (select username from user group by username...,phone from user group by username,phone HAVING count(*) >1); 注意:where条件(username,phone)的括号不能少不然会报错。...删除用户名和手机号都相同的重复记录 DELETE from user where (username,phone) -- 注意:此处一定要加括号,当成联合字段来处理 IN ( --...SELECT MIN(id) FROM user GROUP BY username,phone HAVING COUNT(1) > 1 ); 上述语句看着是不是应该正常能执行删除掉用户名和手机号都相同的重复记录只保留...实际执行会报如下错误: 1093 - You can’t specify target table ‘user’ for update in FROM clause 含义:不能在同一查询的数据作为同一的更新数据

10.8K30

使用VBA删除工作的重复行

标签:VBA 自Excel 2010发布以来,已经具备删除工作重复行的功能,如下图1所示,即功能区“数据”选项卡“数据工具——删除重复值”。...图1 使用VBA,可以自动执行这样的操作,删除工作所有数据的重复行,或者指定的重复行。 下面的Excel VBA代码,用于删除特定工作所有的所有重复行。...如果没有标题行,则删除代码后面的部分。...如果只想删除指定(例如第1、2、3的重复项,那么可以使用下面的代码: Sub DeDupeColSpecific() Cells.RemoveDuplicates Columns:=Array...(1, 2, 3), Header:=xlYes End Sub 可以修改代码中代表列的数字,以删除你想要的的重复行。

11.1K30

删除MySQL的重复数据?

前言一般我们将数据存储在MySQL数据库,它允许我们存储重复的数据。但是往往重复的数据是作废的、没有用的数据,那么通常我们会使用数据库的唯一索引 unique 键作为限制。...那么如何在一个普通的数据库删除重复的数据呢?那我用一个例子演示一下如何操作。。。...和 不等于 2.同时删除空的业务主键数据那么便有以下几个查询:/*1、查询中有重复数据的主键*/select rd2.iccId from flow_card_renewal_comparing rd2...flow_card_renewal_comparing rd2 GROUP by rd2.iccId having count(rd2.iccId)>1 )or iccId is null注意一点是mysql...做删除的时候会提示不能用查询的结果来做删除操作,这个时候就需要将查询的数据作为一个临时,起别名进行删除啦。

7.1K10

【DB笔试面试469】Oracle如何删除重复的记录

题目部分 Oracle如何删除重复的记录? 答案部分 平时工作可能会遇到这种情况,当试图对表的某一或几列创建唯一索引时,系统提示ORA-01452 :不能创建唯一索引,发现重复记录。...这个时候只能创建普通索引或者删除重复记录后再创建唯一索引。 重复的数据可能有这样两种情况:第一种是只有某些字段一样,第二种是两行记录完全一样。...删除重复记录后的结果也分为两种,第一种是重复的记录全部删除,第二种是重复的记录只保留最新的一条记录,在一般业务,第二种的情况较多。...1、删除重复记录的方法原理 在Oracle,每一条记录都有一个ROWID,ROWID在整个数据库是唯一的,ROWID确定了每条记录是在Oracle的哪一个数据文件、块、行上。...2、删除重复记录的方法 若想要删除部分字段重复的数据,则使用下面语句进行删除,下面的语句是删除字段1和字段2重复的数据: DELETE FROM 名 WHERE (字段1, 字段2) IN (

2.7K30

MySQL】面试官:如何查询和删除MySQL重复的记录

写在前面 最近,有小伙伴出去面试,面试官问了这样的一个问题:如何查询和删除MySQL重复的记录?相信对于这样一个问题,有不少小伙伴会一脸茫然。那么,我们如何来完美的回答这个问题呢?...如何删除MySQL的重复记录?另一种理解为:如何查询并删除MySQL的重复记录? 没关系,不管怎么理解,我们今天都要搞定它!! 为了小伙伴们更好的理解如何在实际工作解决遇到的类似问题。...这里,我就不简单的回答标题的问题了,而是以SQL语句来实现各种场景下,查询和删除MySQL数据库的重复记录。...people group by peopleId having count(peopleId) > 1) 2、删除多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid...如果需要删除重复的记录(重复记录保留1条),可以按以下方法删除 select distinct * into #Tmp from tableName drop table tableName select

5.9K10

MYSQL操作数据记录

36:操作数据记录 插入记录   INSERT INTO 名  VALUES();   或者INSERT 名  VALUES();  UPDATE 更新记录(单更新)  DELETE 删除记录...(单删除)  SELECT 查询记录 查询表达式 每一个表达式想要的一,必须有至少一个。...多个之间以英文逗号分割。 星号(*)表示所有。tbl.name.*可以表示命名表的所有。 查询表达式可以使用[AS]alias_name为其赋予别名。...WHERE 条件表达式     对记录进行过滤,如果没有指定WHERE子句,则显示所有记录。     在WHERE表达式,可以使用MySQL支持的函数或运算符。...DESC)  HAVING 分组条件  ORDER BY 对查询结果进行排序(ASC升序,DESC降序)  LIMIT 限制查询结果返回的数量 (编号从0 开始,从第一个位置,排几个) 从一个的内容插入到另一个

2.2K50

【已解决】如果MySQL数据库生成PDM

数据库生成对应的PDM文件,这里凯哥就讲讲第一种将MySQL数据库的生成对应的PDM文件。...环境准备: MySQL数据库连接客户端(可以使用sqlyong或者是navicat等这类客户都工具类) PowerDesigner。这里凯哥使用的是PowerDesigner来生成PDM的。...如果您使用的是其他的工具,请自行查询。 操作步骤: ①:打开MySQL客户端,连接到需要生成PDM的数据库,并将导出成sql文件的。注意:这里只导出结构,不需要导出数据的。...如果需要重新命名,修改好名字后,点击确定。 ④:选择在第二步骤我们导出的sql文件 ⑤:点击确当,就可以生成对应的PDM文件了。生成后的如下图: 说明: 自动生成的,不会添加之间的关系。...如果需要添加结构之间的关系,需要自己在PowerDesigner手动的去添加关联关系的。 文章涉及到的软件如下图:

33000
领券