首页 > 其他分享 >replace into

replace into

时间:2023-09-03 09:55:08浏览次数:52  
标签:... name into replace MySQL id

MySQL replace into 用法(insert into 的增强版)
在向表中插入数据的时候,经常遇到这样的情况:1. 首先判断数据是否存在; 2. 如果不存在,则插入;3.如果存在,则更新。

在 SQL Server 中可以这样处理:

if not exists (select 1 from t where id = 1)
insert into t(id, update_time) values(1, getdate())
else
update t set update_time = getdate() where id = 1
那么 MySQL 中如何实现这样的逻辑呢?别着急!MySQL 中有更简单的方法: replace into

replace into t(id, update_time) values(1, now());

replace into t(id, update_time) select 1, now();
replace into 跟 insert 功能类似,不同点在于:replace into 首先尝试插入数据到表中, 1. 如果发现表中已经有此行数据(根据主键或者唯一索引判断)则先删除此行数据,然后插入新的数据。 2. 否则,直接插入新数据。

要注意的是:插入数据的表必须有主键或者是唯一索引!否则的话,replace into 会直接插入数据,这将导致表中出现重复的数据。

MySQL replace into 有三种形式:
1. replace into tbl_name(col_name, ...) values(...)
2. replace into tbl_name(col_name, ...) select ...
3. replace into tbl_name set col_name=value, ...
前两种形式用的多些。其中 “into” 关键字可以省略,不过最好加上 “into”,这样意思更加直观。另外,对于那些没有给予值的列,MySQL 将自动为这些列赋上默认值。


转载>>>>>>>>>>>>>>>>> https://blog.csdn.net/risingsun001/article/details/38977797

标签:...,name,into,replace,MySQL,id
From: https://www.cnblogs.com/Zhaolongtao/p/17674637.html

相关文章

  • MySQL 使用Navicat delete/insert into/update 大量数据表锁死,kill的线程后线程处于ki
      MySQL使用delete/insertinto/update大量数据表锁死,kill的线程后线程处于killed状态问题解决实际生产环境问题描述:使用Navicat备份BigData数据表时不小心点到了取消按钮,导致数据表被锁。  查看MySQL线程队列,找到刚刚执行的SQL看是属于什么状态。showprocessli......
  • 正则表达式笔记 str.replace+re.sub
    原内容#正则表达式:#(?i)表示接下来的匹配将不区分大小写#.*表示匹配任意字符(除了换行符)零次或多次#(.*)保存捕获的结果,即保存匹配到-h.*之前的全部内容#将字符串元素中(-小写字母)替换为空字符self.df_投料['倒卷前......
  • MySql之 replace 用法
    mysqlreplace实例说明: UPDATEtb1SETf1=REPLACE(f1,'abc','def'); REPLACE(str,from_str,to_str) 在字符串str中所有出现的字符串from_str均被to_str替换,然后返回这个字符串 这个函数用来批量替换数据中的非法关键字是很有用的!如下例子: 例1:UPDATEBBSTo......
  • r'\1'表示替换字符串中的第一个捕获组 将匹配到的字符串被替换为第一个捕获组的内容
    请解释pd.Series.str.replace(pat=r'(?i)(.*)-h.*',#(.*)表示一个捕获组repl=r'\1',#将匹配到的字符串被替换为捕获组的内容regex=True)中r'\1'的作用在pd.Series.str.replace()函数中,r'\1'表示替换字符串中的第一个捕获组......
  • ORACLE SELECT INTO 赋值为空,抛出 NO DATA FOUND 异常
    例子:DECLAREORDER_NUMVARCHAR2(20);BEGINSELECTS.ORDER_NUMINTOORDER_NUMFROMSALES_ORDERSWHERES.ID=122344;DBMS_OUTPUT.PUT_LINE('单号:'||ORDER_NUM);END;在查询结果为空的情况下,以上代码会报错:未找到任何数据解决方法:改为SELECTMAX(S.ORDER_NUM)INTO......
  • mysql字符串替换 replace方法替换字段中的值
    需求:字符串A是一个JSON字符串,其中的属性值可能为空吗,例如字段”result“{"处理结果":{"字段A":{"结果":""},......,{"字段X":{"结果”:""}}}需求:如果其中的结果为空则将 {"结果":""}替换为""selectreplace(result,'{"......
  • scroll-view 组件里的 scroll-into-view 属性实例
    微信小程序的scroll-view组件中,scroll-into-view属性可以指定滚动到指定id的位置。<scroll-viewclass="content"scroll-yscroll-into-view="{{intoIndex}}"scroll-with-animation>intoIndex值应为某子元素id(id不能以数字开头),设置哪个方向可滚动,则在哪个方向滚动到该......
  • 无涯教程-PHP - eregi_replace()函数
    eregi_replace()-语法stringeregi_replace(stringpattern,stringreplacement,stringoriginalstring);eregi_replace()函数的操作与ereg_replace()完全相同,只是在字符串中搜索模式不区分大小写。eregi_replace()-返回值发生替换后,将返回修改后的字符串。如果未......
  • mysql replace && insert && update && delete
    目录mysqlreplace&&insert&&update&&deletereplacemysqlreplace&&insert&&update&&deletereplace我们在使用数据库时可能会经常遇到这种情况。如果一个表在一个字段上建立了唯一索引,当我们再向这个表中使用已经存在的键值插入一条记录,那将会抛出一个主键冲突的......
  • Asrock-Z690-PG-Reptide i5-13600kf电脑 Hackintosh 黑苹果引导文件
    硬件配置(需要下载请百度搜索:黑果魏叔)硬件型号驱动情况主板AsrockZ690PGReptide处理器i5-13600kfRaptorLake(Undervolted)已驱动内存2x16GbDDR43600ADATAXPG已驱动硬盘1TbNetacNV7000NVMEM2(PCI-e4.0)已驱动显卡RadeonRX6600PowerColorFighter8Gb已驱动声卡瑞昱......