Mysql中有类似merge into这种函数吗

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mysql中有类似merge into这种函数吗相关的知识,希望对你有一定的参考价值。

mysql可以通过如下两个操作语法来实现:
INSERT INTO ... ON DUPLICATE KEY UPDATE
或者
REPLACE INTO ...
参考技术A bigint 用于某些特殊的情况,当整数值超过 int 数据类型支持的范围时,就可以采用 bigint。在
SQL Server 中,int 数据类型是主要的整数数据类型。
在数据类型优先次序表中,bigint 位于 smallmoney 和 int 之间。

只有当参数表达式是 bigint 数据类型时,函数才返回 bigint。SQL Server
不会自动将其它整数数据类型(tinyint、smallint 和 int)提升为 bigint。
int(M) 在 integer 数据类型中,M
表示最大显示宽度。在 int(M) 中,M 的值跟 int(M) 所占多少存储空间并无任何关系。和数字位数也无关系 int(3)、int(4)、int(8)
在磁盘上都是占用 4 btyes 的存储空间。

Oracle merge into的优势

简介

  Oracle merge into命令,顾名思义就是“有则更新,无则插入”,这个也是merge into 命令的核心思想,在实际开发过程中,我们会经常遇到这种通过两表互相关联匹配更新其中一个表的某些字段的业务,有时还要处理不匹配的情况下的业务。这个时候你会发现随着表的数据量增加,类似这种业务场景的执行效率会比较慢,那是因为你需要多次重复查询两表中的数据,而通过merge into命令,只需要一次关联即可完成“有则更新,无则插入”的业务场景,大大提高语句的执行效率。

语法

1 merge into A表 using B表 on (A表.id = B表.id)
2 when matched then --匹配到,则更新A表数据
3 update set A.col=B.col
4 when not matched then --没匹配到,往A表插入数据
5  insert (a,b,c) values (a,b,c);

解释:利用B表通过A表.id=B表.id的条件来匹配A表,当满足条件时,可以对A表进行更新,当不满足条件时,可以利用inert语句插入相关数据。

案例

merge into student.stuinfo_2018 A
using student.stuinfo B
on (A.stuid = B.stuid)
when matched then --匹配到往A更新数据
  update set A.age = B.age
when not matched then --没匹配到往A插入数据
  insert
    (a.STUID,
     a.STUNAME,
     a.SEX,
     a.AGE,
     a.CLASSNO,
     a.STUADDRESS,
     a.GRADE,
     a.ENROLDATE,
     a.IDNUMBER)
  values
    (b.STUID,
     b.STUNAME,
     b.SEX,
     b.AGE,
     b.CLASSNO,
     b.STUADDRESS,
     b.GRADE,
     b.ENROLDATE,
     b.IDNUMBER);

 

以上是关于Mysql中有类似merge into这种函数吗的主要内容,如果未能解决你的问题,请参考以下文章

Oracle merge into的优势

oracle merge into 表里面的一部分数据怎样做?

请问 postgresql中有 replace into或者 Merge into 这样的功能的语句吗 我想实现这样的功能啊

Oracle中merge into的使用

Oracle中merge into的用法

Oracle merge into 的效率问题