如果它不存在,则在MySQL中添加行

时间:2012-03-12 10:22:55

标签: mysql

向表中添加行时,首先检查它是否存在然后哪个是最有效的处理方式?

查询是否存在是否存在,如果不存在则插入。

或者在复制时使用?

或者简单地替换(如果行不存在,这会起作用吗?)

由于

3 个答案:

答案 0 :(得分:3)

我认为这是MySQL中最快的方式:

REPLACE into table (col1, col2) values(1, 'ABC')

编辑:

MySQL会删除该行,如果它存在并插入一个新行。

答案 1 :(得分:2)

我认为您需要INSERT IGNORE查看thisINSERT ON DUPLICATE KEY UPDATE

答案 2 :(得分:1)

取决于'exists'的含义,如果有一个可以检查的唯一字段,例如'email'或'login'那么你可以尝试插入和mysql引发错误,如果存在,否则你会做取代刚刚建议的juergen。

注意:如果您因任何原因需要时间戳,请不要使用替换(例如,如果它们用于加密密码或盐