一尘不染

mysql条件插入-如果不存在插入

mysql

是否有只查询记录的查询,如果不存在,则插入?我不想重复更新或替换。寻找一个查询解决方案,寻找其他答案,但不是我真正想要的。

表:

name|value|id
------------------
phill|person|12345

伪查询:

IF NOT EXISTS(name='phill', value='person', id=12345) INSERT INTO table_name

阅读 268

收藏
2020-05-17

共1个答案

一尘不染

使用REPLACE-与INSERT完全相同,不同之处在于,如果表中的旧行与PRIMARY
KEY或UNIQUE索引的新行具有相同的值,则在插入新行之前会删除该旧行。

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

-- For your example query
REPLACE INTO table_name(name, value, id) VALUES
('phill', 'person', 12345)

编辑:由于您不能使用REPLACE,另一个选择是:为表数据(主键,唯一性)设置约束索引并使用INSERT IGNORE

INSERT IGNORE INTO table_name
SET name = 'phill',
    value = 'person',
    id = 12345;
2020-05-17