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

MySQL ON DUPLICATE KEY UPDATE用于在单个查询中插入多行

吕嘉赐
2023-03-14
问题内容

我有一个SQL查询,我想在单个查询中插入多行。所以我用了类似的东西:

$sql = "INSERT INTO beautiful (name, age)
  VALUES
  ('Helen', 24),
  ('Katrina', 21),
  ('Samia', 22),
  ('Hui Ling', 25),
  ('Yumie', 29)";

mysql_query( $sql, $conn );

问题是当我执行此查询时,我想检查是否应检查例如上面的UNIQUE键(不是PRIMARY KEY),'name'如果'name'已经存在,则应更新相应的整行,否则将其插入。

例如,在下面的示例中,如果'Katrina'数据库中已经存在该行,则应更新整行,而不考虑字段的数量。再次,如果'Samia'不存在,则应插入该行。

我想到使用:

INSERT INTO beautiful (name, age)
      VALUES
      ('Helen', 24),
      ('Katrina', 21),
      ('Samia', 22),
      ('Hui Ling', 25),
      ('Yumie', 29) ON DUPLICATE KEY UPDATE

这是陷阱。我对如何进行感到困惑和困惑。我一次有多个行要插入/更新。请给我一个方向。谢谢。


问题答案:

使用关键字VALUES来引用新值(请参阅文档)。

INSERT INTO beautiful (name, age)
    VALUES
    ('Helen', 24),
    ('Katrina', 21),
    ('Samia', 22),
    ('Hui Ling', 25),
    ('Yumie', 29)
ON DUPLICATE KEY UPDATE
    age = **VALUES** (age),
     ...


 类似资料:
  • 问题内容: 我目前在MySQL上使用这种类型的SQL在单个查询中插入多行值: 关于PDO的阅读,使用准备好的语句应该比静态查询为我提供更好的安全性。 因此,我想知道是否可以使用准备好的语句生成“通过使用一个查询插入多行值”。 如果是,请问我该如何实施? 问题答案: 使用PDO预准备语句插入多值 在一个execute语句中插入多个值。为什么这样,因为根据此页面,它比常规插入更快。 更多的数据值,或者

  • 问题内容: 这应该是一个相当简单的问题,但我无法在线找到可靠的答案。我试图将多个行插入到同一表中,但只有一条语句。我在网上看到的最受欢迎的是以下内容,但我读到它仅适用于SQL Server 2008: 如果此方法可与SQL Server 2005一起使用,我会更喜欢此方法,但我认为不会。根据我的阅读,另一个选项与INSERT之后的UNION ALL以下SELECT语句有关,这似乎很笨拙。有谁知道在

  • 问题内容: 假设我有两个表,并且 我想在一个查询中将来自某些输入的数据插入到表中,该怎么做? 请,如果可以做到,请解释语法。 问题答案: MySQL不支持在单个INSERT语句中进行多表插入。奇怪的是,Oracle是我所知道的唯一一个…

  • 问题内容: 您好,我正在制作一个在pdo中进行多次插入的类。 是这样的 搜索后,我发现我必须建立类似 然后用这个执行 ,其中是 问题是我还得到一个错误就如何解决呢? 这是我正在做的一小段。 问题答案: 避免并发症的简单方法是这样的 但是,这将多次执行该语句。因此,最好创建一个较长的单个查询来执行此操作。 这是我们如何执行此操作的示例。

  • 问题内容: 我有这3张表。 我创建了用于创建订单的表单,其中填写了订单(日期)的信息以及完成订单的人。在我的表单中,有一个表格可供我选择员工并获取其ID。我想知道是否可以通过一个查询将表Order和completelyBy插入表中。 使用两个插入内容或使用答案中的代码之间在有效性上有什么区别吗? 问题答案: 这可以使用修改公共表表达式的数据来完成: 第一部分插入表中并返回插入的ID。然后,第二部分

  • 问题内容: 我想编写脚本,具有对多个插入查询的功能。让我更好地解释一下。 我有一个html形式的输入。而且我有MySQL查询要插入到表中。所以我想让我的函数为“数量”次插入此查询。 例如要插入3次。有什么建议么? 问题答案: http://dev.mysql.com/doc/refman/5.5/zh- CN/insert.html