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

MySQL-忽略插入错误:重复输入

归俊捷
2023-03-14
问题内容

我正在使用PHP。

请问什么是将新记录插入具有唯一字段的数据库的正确方法。我正在批量插入很多记录,我只想插入新记录,并且我不想重复条目有任何错误。

有没有唯一方法可以首先进行SELECT并查看条目是否在INSERT之前已经存在-并且仅在SELECT不返回任何记录时才插入INSERT?我希望不是。

我想以某种方式告诉MySQL忽略这些插入而没有任何错误。

谢谢


问题答案:

如果在重复记录时不采取任何措施,则可以使用INSERT …
IGNORE
语法。

如果要用相同密钥的新记录覆盖旧记录,则可以使用REPLACE
INTO
语法。

或者,如果要对记录执行更新,而在遇到重复记录时可以使用INSERT … ON DUPLICATE KEY
UPDATE
语法。

编辑:以为我会添加一些示例

例子

假设您有一个tbl由两列id和命名的表value。只有一个条目,id = 1,value = 1。如果运行以下语句:

REPLACE INTO tbl VALUES(1,50);

您仍然有一条记录,id = 1值= 50。请注意,整个记录首先被删除,然后重新插入。然后:

INSERT IGNORE INTO tbl VALUES (1,10);

该操作成功执行,但未插入任何内容。您仍然具有id = 1和value = 50。最后:

INSERT INTO tbl VALUES (1,200) ON DUPLICATE KEY UPDATE value=200;

现在,您有一条ID为1且值为200的记录。



 类似资料:
  • 我正在导入一个相当大的数据库。文件中几乎有1,000,000行。问题是我在尝试导入数据库时遇到语法错误。上面写着: 第8428420行错误1064(42000):您的SQL语法中有错误;检查与您的MySQL server版本相对应的手册,以获得在“ 致命错误:中超过600秒的最大执行时间”附近使用的正确语法 通常我会打开.sql文件并修复错误。但我的电脑真的很难打开这个文件。 在导入MySQL数据

  • 本文向大家介绍如果表中插入重复值,则忽略MySQL INSERT IGNORE语句并显示错误,包括了如果表中插入重复值,则忽略MySQL INSERT IGNORE语句并显示错误的使用技巧和注意事项,需要的朋友参考一下 让我们首先创建一个表- 如官方MySQL文档中 ,“如果没有IGNORE,重复表中现有UNIQUE索引或PRIMARY KEY值的行将导致重复键错误,并且该语句将中止”。 因此,让

  • 我目前使用JOOQ的可更新记录如下模式插入: 在,我希望使用数据库中的值更新,例如,如果表具有自动递增的列,将返回其值。 如果列具有唯一约束,则当违反该约束时,将抛出。我的问题是可以告诉JOOQ不要抛出异常,但仍然用现有的值更新记录吗?

  • 问题内容: 我正在使用Python 在mysql中运行查询 运行查询后,我想知道该行的主键。我知道有查询 但是我不确定它是否可以与插入忽略一起使用 做这个的最好方式是什么? 问题答案: 文档的说: 如果使用INSERT IGNORE并且忽略该行,则AUTO_INCREMENT计数器不会增加,并且LAST_INSERT_ID()返回0,这表明没有插入行。 知道了这一点,您可以将其分为多个步骤: 插入

  • null 对于第二个选项,我使用MessageHandler: 每当我的模型(函数)返回适当的标记时,我想输入其中一个ConversationHandlers,但不知道如何执行。