LMLPHP后院

MySQL replace into 用法技术

maybe yes 发表于 2017-07-06 11:01

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

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

有三种形式:

  • replace into table_name(column_name, ...) values(...)
  • replace into table_name(column_name, ...) select ...
  • replace into table_name set column_name=value, ...

对于前面两种形式,可以省略 into 关键字。

replace 的运行与 insert 很相似。只有一点例外,假如表中的一个旧记录与一个用于 primary key 或一个 unique 索引的新记录具有相同的值,则在新记录被插入之前,旧记录被删除。注意,除非表有一个 primary key 或 unique 索引,否则,使用一个 replace 语句没有意义。该语句会与 insert 相同,因为没有索引被用于确定是否新行复制了其它的行。

2024-12-22 15:47:14 1734853634 0.008509