`
小网客
  • 浏览: 1241064 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Mysql中Replace into在Oracle中实现

 
阅读更多

Mysql的 replace into 就是说在对表进行insert的操作的时候,如果表中存在此数据,那么执行update操作(如果设置的是主键为自动增长那么会增加),反之执行insert操作,建表语句如下:

 

create table test(
id int,
name varchar(22)
);

 

 

create table test_id(
id int primary key,
name varchar(22)
);

 

 然后我们执行如下操作:

 

replace into test set id=2,name='abcd';
replace into test set id=2,name='abcd';
replace into test set id=2,name='abcd';

 

 

replace into test_id set id=2,name='abcd';
replace into test_id set id=2,name='abcd';
replace into test_id set id=2,name='abcd';

 

 然后查询看数据:

 

select count(1)  from  test ;

+----------+
| count(1) |
+----------+
|        3 |
+----------+
1 row in set (0.00 sec)
 

select count(1)  from  test _id;

+----------+
| count(1) |
+----------+
|        1 |
+----------+
1 row in set (0.00 sec)

 判断数据是否相同的标准就是根据唯一索引来判断,那么在oracle中有没有替代品?

merge into 

merge into 
 test_id a
using 
 (select id , name from test_id ) b
on (a.id = b.id)
 WHEN MATCHED THEN
   UPDATE SET a.name = b.name
 WHEN NOT MATCHED THEN
   INSERT
    (a.id, a.name)
   VALUES
    (b.id, b.name);
 

 

分享到:
评论

相关推荐

    Oracle的表结构转成Mysql的表结构

    - **数据类型转换**:Oracle中的`DATE`和`TIMESTAMP`类型会被转换为MySQL中的`DATETIME`类型,需要注意精度问题。 - **NUMBER类型的处理**:超大的`NUMBER`类型会直接转换为`BIGINT`,需要注意可能的精度损失。 - **...

    Oracle,SQl,MySql实现分页查询

    本文将基于提供的文件信息,深入探讨三种不同的分页查询方法及其在Oracle、SQL Server(这里用SQL代替)、MySQL中的实现方式,并对它们的性能进行对比分析。 #### 分页方案一:利用Not In和SELECT TOP分页 **基本...

    瀚高迁移工具,迁移工具支持源端为Oracle、MySQL、SQL Server、DB2、Kingbase、DM

    migration-v4.1.4,瀚高数据库迁移工具支持源端为Oracle、MySQL、SQL Server、DB2、KingbaseV7、KingbaseV8、DM7、DM8、HIGHGO数据库,目标端为HIGHGO、PostgreSQL数据库的自动化迁移,为了能更好地实现数据迁移工程...

    oracle实现属性的自增

    Oracle 中没有像 MySQL 中一样的 auto_increment 属性来实现属性值的自动增长。相反,Oracle 是通过序列和触发器来实现属性的自动增长的。 知识点二: 序列(Sequence) 序列是 Oracle 中的一种机制,可以生成连续...

    MYSQL,SQLSERVER,ORACLE常用的函数

    根据提供的标题和描述,本文将详细介绍在MySQL、SQL Server以及Oracle数据库中常用的函数。这些函数主要分为几大类:字符串处理函数、数值处理函数、日期处理函数、转换函数以及其他一些特殊用途的函数。 ### 字符...

    mysql面试题,涉及MySQL基础、MySQL索引、MySQL语句 MySQL进阶等方面,适用于初、中级开发人员

    MySQL 中没有类似 Oracle 的 merge 语句,但是可以使用两种方法来实现类似的功能:INSERT INTO … ON DUPLICATE KEY UPDATE 和 REPLACE INTO。前者使用 INSERT 语句向表中插入记录,如果发现主键或唯一键冲突,则...

    使用Oracle作为中间件编写存储过程,实现Sql Server到MySQL的数据同步

    本案例中,我们将讨论如何使用Oracle作为中间件,通过编写存储过程实现Sql Server到MySQL的数据同步,以此解决不同数据库系统间的数据交换问题。 首先,我们要理解为什么要使用Oracle作为中间件。在甲方公司的ERP、...

    oracle通过1条语句插入多个值的方法示例

    这条语句在mysql中执行的话,语法一点毛病都没有,但是,在oracle上执行一直报错: ORA-00933: SQL 命令未正确结束 后来有了如下的解决办法: /* --一、建表 create or replace table pm_ci ( ci_id varchar2(20...

    oracle主键自动增长

    本文将详细介绍如何在Oracle中创建序列、触发器,并通过一个具体的示例来展示整个过程。 ### 一、理解Oracle中的序列 在Oracle数据库中,序列是一种用于生成一系列数字的对象。序列通常被用来作为主键值或任何需要...

    创建oracle数据库中表的主键和自增

    下面将详细介绍如何通过序列(Sequence)和触发器(Trigger)来实现在Oracle中创建自增的主键。 #### 序列(Sequence) 序列是一种自动产生数值的数据库对象。它可以被用来生成唯一的、连续的整数或浮点数。序列...

    Oracle插入数据时获取自增ID

    在Oracle中,如果需要获取刚插入的数据的ID值,可以使用`CURRVAL`属性,它返回最近一次调用`NEXTVAL`所生成的值。例如,在插入数据后立即查询`seq_atable.CURRVAL`: ```sql SELECT seq_atable.CURRVAL FROM dual; `...

    如何为oracle中的表增加自动增长列.pdf

    以下是为Oracle中的表增加自动增长列的几个步骤: 1. 创建一个序列: 序列是Oracle数据库中用于生成一组数字的对象。创建序列的SQL命令通常如下所示: ```sql CREATE SEQUENCE your_sequence_name START WITH 1 ...

    mysql触发器实现oracle物化视图示例代码

    在MySQL中,由于不直接支持物化视图,我们可以使用触发器来模拟Oracle的物化视图功能。下面将详细介绍如何使用MySQL触发器来实现类似的功能。 首先,我们需要创建两个表:基表`Orders`和物化视图表`Order_mv`。`...

    建立oracle带自增长表

    首先,我们需要了解Oracle中的自增长特性是通过序列(Sequences)来实现的,而不是像其他数据库系统(如SQL Server或MySQL)那样直接在表定义中指定。序列是一种数据库对象,它能够按照预设的步长(increment by)...

    OracleID自增长

    本文将详细介绍如何在Oracle中实现ID自增长,并通过具体的步骤和示例代码来进行演示。 #### 二、Oracle ID自增长原理及实现步骤 ##### 1. 创建表 首先,我们需要创建一个表,该表将用于存储我们的数据。在这个...

    Oracle主键自增的办法

    在 Oracle 数据库中,与许多其他关系型数据库系统不同,它并没有内置的自动自增字段类型,例如 MySQL 的 `AUTO_INCREMENT` 或 SQL Server 的 `IDENTITY`。但是,Oracle 提供了序列(Sequences)和触发器(Triggers)...

    Oracle 实现类似SQL Server中自增字段的一个办法

    而在Oracle中,需要额外的`SEQUENCE`和`TRIGGER`来达到相同效果,这增加了维护的复杂性。 5. **优化与注意事项**: - 如果并发插入很高,`NOCACHE`可能会成为性能瓶颈,因为每次插入都需要获取新的序列值。在这种...

    关于oracleIP

    在Oracle中,可以通过创建序列(Sequence)和触发器(Trigger)的方式来实现自增字段。 ##### 1. 创建序列 序列是一种特殊类型的数据库对象,它可以用来生成一系列的数值。这些数值可以是递增或递减的,也可以根据...

    Oracle9i中建立自增字段的最新办法

    Trigger是Oracle中的一个数据库触发器,可以在特定的数据库事件(如INSERT、UPDATE、DELETE)发生时自动执行一段PL/SQL代码。在这里,我们创建了一个Before Insert触发器`trg_<tablename>`,它在插入新行前获取...

Global site tag (gtag.js) - Google Analytics