在mysql中指定id替换为

时间:2013-02-07 08:37:14

标签: mysql replace

我正在为我的网站使用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 个答案:

答案 0 :(得分:2)

两行会受到影响,因为REPLACE INTO将执行DELETE,然后在键冲突时执行INSERT,因此最终会有2个操作,首先是DELETE(受影响的是1行),然后是INSERT(受影响的第2行)。

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

答案 1 :(得分:1)

MySQL REPLACE如UPDATE语句如下:

REPLACE INTO table_name SET column_name1 = value1 AND column2 = value2

答案 2 :(得分:0)

使用如下查询:

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

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

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

答案 3 :(得分:0)

在你的情况下它看起来像id没有3被删除然后再次插入。这就是它说2条记录受到影响的原因。你的桌子可能有第3行,Roni和印度插入并删除第3行,哈利,美国

相关问题