首页
学习
活动
专区
圈层
工具
发布

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

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

    MySQL数据库: 添加列、修改列、删除列、修改列属性、修改表名(包括MySQL、SQLServer、Oracle)

    我们针对数据库的增删改查语句比较熟悉了,但是今天建立数据库的时候想在固定位置通过语句添加一列,做以下总结: ALTER TABLE:添加,修改,删除表的列,约束等表的定义。...查看列:desc 表名; 修改表名:alter table t_book rename to t_user; 添加列:ALTER TABLE t_userADD COLUMN tianjia INT...(后面表示是在id列后添加) AFTER id; 删除列:alter table 表名 drop column 列名; 修改列名MySQL: alter table t_user change...namevarchar(22);** 注意:这里表名和列名是否加 ‘’ 都可以 针对上述部分语句做一个示例 1.我的是mysql数据库,t_user表: 2.在id的列后添加tianjia列:...tianjia` INT AFTER `id`; 3.修改列名tianjia为xiugai: ALTER TABLE t_user CHANGE tianjia xiugai INT; 4.删除

    4.1K10

    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

    9.3K10

    mysql常用功能之删除一张表中重复数据&ab表中a存在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表没有的记录.

    5.2K40

    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 含义:不能在同一表中查询的数据作为同一表的更新数据

    15K30

    SQL删除表中重复记录方法总结

    在 SQL 中删除表中的重复记录是一个常见的数据清洗操作。...一、通用思路要删除重复记录,通常需要:识别重复行(基于一个或多个字段)保留其中一行(通常是最早插入的或具有最小/最大主键的那一行)删除其余重复行二、方法分类与示例方法1:使用窗口函数(推荐,适用于支持窗口函数的数据库...(保留最小 id 的记录)-- PostgreSQL / SQL Server / Oracle / MySQL 8.0+DELETE FROM employeesWHERE id NOT IN (...方法2:自连接删除(适用于 MySQL 删除重复,保留较小 id 的记录DELETE e1 FROM employees e1INNER JOIN employees e2WHERE...无主键:先加临时 ID 列,再去重。大数据量:考虑分批删除,避免锁表或事务过大。生产环境:先备份,再执行删除!

    1.4K10

    使用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 可以修改代码中代表列的数字,以删除你想要的列中的重复行。

    20.9K30

    删除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...做删除的时候会提示不能用查询的结果来做删除操作,这个时候就需要将查询的数据作为一个临时表,起别名进行删除啦。

    11K10

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

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

    5.2K30

    如何在MySQL中查看当前会话中存在哪些临时表?

    MySQL是一种常用的关系型数据库管理系统,广泛应用于各种规模的应用程序中。在MySQL中,临时表是一种特殊类型的表,它们仅在当前会话中存在,并在会话结束后自动删除。...为了只查看当前会话中存在的临时表,可以使用以下方法之一: 方法一:使用INFORMATION_SCHEMA MySQL提供了一个特殊的系统数据库INFORMATION_SCHEMA,它包含了关于数据库、...表和列的详细信息。...方法二:使用COMMIT语句 在MySQL中,当一个会话结束时,所有的临时表都将被自动删除。因此,可以通过执行COMMIT语句来结束当前会话,并查看当前会话中存在的临时表。...3、查找以“#sql”开头的表名,这些表是临时表。 临时表在MySQL中是一种非常有用的功能,它们可以帮助我们在当前会话中暂时存储和处理数据。

    2.6K10

    【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

    8.6K10

    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 开始,从第一个位置,排几个) 从一个表的内容插入到另一个表中

    3.3K50
    领券