代码之家  ›  专栏  ›  技术社区  ›  Alex Mcp

只有记录不存在时,如何添加到MySQL表中?

  •  1
  • Alex Mcp  · 技术社区  · 15 年前

    我正在从JSON对象中获取一个字符串数组。我想将这些字符串保存在数据库中,但前提是它们不在数据库中。将数据库中已经存在的内容与我将要输入的内容进行比较并排除匹配项的最佳方法是什么?

    我使用的是php和mysql。

    4 回复  |  直到 13 年前
        1
  •  5
  •   chaos    15 年前

    由于您所描述的是希望在字符串已经存在的情况下保留记录,因此您可能需要的是 IGNORE 修饰语 INSERT (即你这样做 INSERT IGNORE ... )。这将使您的查询在找到重复的键时什么也不做。当然,这要求您要插入的字符串字段上有唯一的键。

        2
  •  3
  •   knabar    15 年前

    replace可以做你想做的-它插入,但是如果主键已经存在,那么该行将首先被删除。除非您需要在表中保留其他列,否则它应该可以工作。

    http://dev.mysql.com/doc/refman/5.0/en/replace.html

        3
  •  2
  •   thoroughly    15 年前

    在MySQL中,可以使用带有“ignore”选项的insert语句,如果行的唯一字段与现有行的唯一字段匹配,则不会插入行。该表必须有一个包含相关字段的唯一性约束。

        4
  •  0
  •   Justin Noel    15 年前

    非常简单的例子:

    您的表:用户 您的字段:用户ID、用户名、邮政编码、已创建 唯一索引:用户名

    插入到用户中(用户名、邮政编码、已创建) 价值观 ('Joe',75034,'2009-06-11') 在重复的密钥更新上,用户\u id=最后一次插入\u id(id)

    用户名有一个唯一的索引;因此,不能多次添加它。当您使用上面的SQL时,它将在第一次添加。第二次,它实际上不会进行插入。通过设置on-duplicate键,您现在可以使用php从MySQL中获取最后一个插入ID,并知道用户ID是真正的插入还是重复的。