当前位置: 首页 > 面试题库 >

为什么在我的INSERT…ON DUPLICATE KEY UPDATE中影响2行?

江承嗣
2023-03-14
问题内容

我正在INSERT ... ON DUPLICATE KEY UPDATEPRIMARY KEY下表做一个:

DESCRIBE users_interests;



+------------+---------------------------------+------+-----+---------+-------+
| Field      | Type                            | Null | Key | Default | Extra |
+------------+---------------------------------+------+-----+---------+-------+
| uid        | int(11)                         | NO   | PRI | NULL    |       |
| iid        | int(11)                         | NO   | PRI | NULL    |       |
| preference | enum('like','dislike','ignore') | YES  |     | NULL    |       |
+------------+---------------------------------+------+-----+---------+-------+

但是,尽管这些值应该是唯一的,但我发现有2行受到影响。

INSERT INTO users_interests (uid, iid, preference) VALUES (2, 2, 'like')
ON DUPLICATE KEY UPDATE preference='like';



Query OK, 2 rows affected (0.04 sec)

为什么会这样呢?

编辑

为了进行比较,请参见以下查询:

UPDATE users_interests SET preference='like' WHERE uid=2 AND iid=2;



Query OK, 1 row affected (0.44 sec)
Rows matched: 1  Changed: 1  Warnings: 0

问题答案:

从手册:

使用ON DUPLICATE KEY UPDATE,如果将行作为新行插入,则每行的受影响行值为1;如果更新现有行,则为2。



 类似资料:
  • 我正在做一个装在盒子里的计数器。我试图使这个计数器对不同的屏幕大小做出响应,但由于某些原因,我试图使用的媒体查询将无法工作。 我曾尝试将设备宽度更改为768px以下,但查询对计数器没有影响,我不确定原因。我已经包括了计数器的HTML/PHP代码以及CSS。有人知道为什么它不起作用吗 我已确保此标签包含在文档的标题中。 超文本标记语言: CSS:

  • 我是css的新手,我正在尝试css注入,我在浏览器上更改主页的属性。 我有一个元素b,它有一个祖先a(不是直接的,中间有几个步骤)。 我读过很多次,通过在类之间使用空格,例如,您可以选择属于a类对象的后代的所有b类对象。 因此,注入会按预期将我的对象的颜色更改为白色。但是只使用不是,这一点我不理解,因为它应该影响b类的所有对象,不管它们的祖先是什么?

  • 下面是vb中的一个特殊情况。我搞乱了SuppressKeyPress属性,发现了一些奇怪的东西。 形势 假设我有一个名为的输入框,我希望名称不带任何数字,当插入数字时,会弹出一个MessageBox并报告错误。 在这种情况下,由于某种奇怪的原因,如果我键入一个数字,它将被写入文本框中,尽管我抑制了按键。 我发现,如果我删除MsgBox行,数字将不会出现在输入框中。 问题 这是怎么回事?为什么Msg

  • 为什么。NET 4.0中C#方法的及时编译顺序会影响它们的执行速度?例如,考虑两种等效的方法: 唯一的区别是引入了局部变量,这会影响生成的汇编代码和循环性能。为什么会这样,这本身就是一个问题。 可能更奇怪的是,在x86(而不是x64)上,调用方法的顺序对性能有大约20%的影响。调用如下方法。。。 ...单线测试速度更快。(使用x86版本配置编译,确保启用了“优化代码”设置,并从VS2010外部运行

  • 问题内容: 我编写了以下JavaScript: 此代码声明一个变量并将其设置为数组值。然后,它声明第二个变量并将其设置为。它对进行操作,然后向和发出警报。不知何故,当我对执行操作时,似乎对执行了相同的操作。 然后,代码对数字值执行相同的操作:声明一个变量并将其设置为数字值。然后,它声明第二个变量并将其设置为。它对进行操作,然后向和发出警报。在这里,我得到预期的行为:对不同的价值观和。 数组与Jav

  • 我正在写一个简单的程序来记录我的油耗。我试图弄明白为什么换行符没有输出到文件中,而其他字段是。 我的文件的输出结果如下所示,例如: 行程里程:270.67成本:33.76加仑使用量:11.567 我要查找的文件的预期输出是: 行程里程:270.67 成本:33.76 加仑消耗:11.567