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中的`DATE`和`TIMESTAMP`类型会被转换为MySQL中的`DATETIME`类型,需要注意精度问题。 - **NUMBER类型的处理**:超大的`NUMBER`类型会直接转换为`BIGINT`,需要注意可能的精度损失。 - **...
本文将基于提供的文件信息,深入探讨三种不同的分页查询方法及其在Oracle、SQL Server(这里用SQL代替)、MySQL中的实现方式,并对它们的性能进行对比分析。 #### 分页方案一:利用Not In和SELECT TOP分页 **基本...
migration-v4.1.4,瀚高数据库迁移工具支持源端为Oracle、MySQL、SQL Server、DB2、KingbaseV7、KingbaseV8、DM7、DM8、HIGHGO数据库,目标端为HIGHGO、PostgreSQL数据库的自动化迁移,为了能更好地实现数据迁移工程...
Oracle 中没有像 MySQL 中一样的 auto_increment 属性来实现属性值的自动增长。相反,Oracle 是通过序列和触发器来实现属性的自动增长的。 知识点二: 序列(Sequence) 序列是 Oracle 中的一种机制,可以生成连续...
根据提供的标题和描述,本文将详细介绍在MySQL、SQL Server以及Oracle数据库中常用的函数。这些函数主要分为几大类:字符串处理函数、数值处理函数、日期处理函数、转换函数以及其他一些特殊用途的函数。 ### 字符...
MySQL 中没有类似 Oracle 的 merge 语句,但是可以使用两种方法来实现类似的功能:INSERT INTO … ON DUPLICATE KEY UPDATE 和 REPLACE INTO。前者使用 INSERT 语句向表中插入记录,如果发现主键或唯一键冲突,则...
本案例中,我们将讨论如何使用Oracle作为中间件,通过编写存储过程实现Sql Server到MySQL的数据同步,以此解决不同数据库系统间的数据交换问题。 首先,我们要理解为什么要使用Oracle作为中间件。在甲方公司的ERP、...
这条语句在mysql中执行的话,语法一点毛病都没有,但是,在oracle上执行一直报错: ORA-00933: SQL 命令未正确结束 后来有了如下的解决办法: /* --一、建表 create or replace table pm_ci ( ci_id varchar2(20...
本文将详细介绍如何在Oracle中创建序列、触发器,并通过一个具体的示例来展示整个过程。 ### 一、理解Oracle中的序列 在Oracle数据库中,序列是一种用于生成一系列数字的对象。序列通常被用来作为主键值或任何需要...
下面将详细介绍如何通过序列(Sequence)和触发器(Trigger)来实现在Oracle中创建自增的主键。 #### 序列(Sequence) 序列是一种自动产生数值的数据库对象。它可以被用来生成唯一的、连续的整数或浮点数。序列...
在Oracle中,如果需要获取刚插入的数据的ID值,可以使用`CURRVAL`属性,它返回最近一次调用`NEXTVAL`所生成的值。例如,在插入数据后立即查询`seq_atable.CURRVAL`: ```sql SELECT seq_atable.CURRVAL FROM dual; `...
以下是为Oracle中的表增加自动增长列的几个步骤: 1. 创建一个序列: 序列是Oracle数据库中用于生成一组数字的对象。创建序列的SQL命令通常如下所示: ```sql CREATE SEQUENCE your_sequence_name START WITH 1 ...
在MySQL中,由于不直接支持物化视图,我们可以使用触发器来模拟Oracle的物化视图功能。下面将详细介绍如何使用MySQL触发器来实现类似的功能。 首先,我们需要创建两个表:基表`Orders`和物化视图表`Order_mv`。`...
首先,我们需要了解Oracle中的自增长特性是通过序列(Sequences)来实现的,而不是像其他数据库系统(如SQL Server或MySQL)那样直接在表定义中指定。序列是一种数据库对象,它能够按照预设的步长(increment by)...
本文将详细介绍如何在Oracle中实现ID自增长,并通过具体的步骤和示例代码来进行演示。 #### 二、Oracle ID自增长原理及实现步骤 ##### 1. 创建表 首先,我们需要创建一个表,该表将用于存储我们的数据。在这个...
在 Oracle 数据库中,与许多其他关系型数据库系统不同,它并没有内置的自动自增字段类型,例如 MySQL 的 `AUTO_INCREMENT` 或 SQL Server 的 `IDENTITY`。但是,Oracle 提供了序列(Sequences)和触发器(Triggers)...
而在Oracle中,需要额外的`SEQUENCE`和`TRIGGER`来达到相同效果,这增加了维护的复杂性。 5. **优化与注意事项**: - 如果并发插入很高,`NOCACHE`可能会成为性能瓶颈,因为每次插入都需要获取新的序列值。在这种...
在Oracle中,可以通过创建序列(Sequence)和触发器(Trigger)的方式来实现自增字段。 ##### 1. 创建序列 序列是一种特殊类型的数据库对象,它可以用来生成一系列的数值。这些数值可以是递增或递减的,也可以根据...
Trigger是Oracle中的一个数据库触发器,可以在特定的数据库事件(如INSERT、UPDATE、DELETE)发生时自动执行一段PL/SQL代码。在这里,我们创建了一个Before Insert触发器`trg_<tablename>`,它在插入新行前获取...