3

我正在为我的网站使用 mysql REPLACE INTO 语法。下面是我的测试表结构,

id  name  address
1   Tom   US
2   Dick  UK
3   Harry US
4   Jony  Spain

询问:

REPLACE INTO table_name VALUES (3, 'Roni', 'India')

现在执行这个查询mysql说,

2 行受影响。插入的行 ID:4(查询耗时 0.0003 秒)

谁能解释一下上面提到的文字是什么意思?为什么2 行受到影响

问候

4

4 回答 4

2

两行受到影响,因为 REPLACE INTO 将在键冲突上执行删除,然后执行插入,因此您最终会执行 2 次操作,首先是删除(受影响的 1 行),然后是插入(受影响的第二行)。

您可能需要考虑其他解决方案,因为 DELETE 的成本很高,因为需要更新索引。在许多情况下,基于 DUPLICATE KEY UPDATE 的查询的 INSERT ... 会更快。

于 2013-02-07T08:44:32.237 回答
1

MySQL REPLACE like UPDATE 语句如下:

REPLACE INTO table_name SET column_name1 = value1 AND column2 = value2
于 2013-02-07T08:55:13.570 回答
0

使用这样的查询:

EXPLAIN REPLACE INTO table_name VALUES (3, 'Roni', 'India')

注意添加“EXPLAIN”关键字!这样 MySQL 将解释发生了什么。

但是请注意,REPLACE INTO 与 INSERT INTO 相同,但如果存在则将替换该行,如果不存在则将其插入。因此,当存在时,它将删除该行然后插入新行,这就是为什么您有两行受到影响。

于 2013-02-07T08:48:45.623 回答
0

在你的情况下,它看起来像 id no 3 被删除然后再次插入。这就是为什么它说有 2 条记录受到影响。您的表可能有第 3 行,Roni 和 India 插入和删除第 3 行,Harry,US

于 2013-02-07T09:00:58.623 回答