如果记录不存在,请插入数据库?

时间:2014-08-28 04:45:51

标签: mysql insert

我已经找到了尝试这种方法的方法,到目前为止,赌注答案是使用INSERT IGNORE语法,但我的问题是我不能使用id。

如果您不知道记录ID,是否有办法将记录插入数据库?如果您不知道记录ID?

例如:我想检查col1(' Hello')中的数据是否已经存在。

INSERT IGNORE INTO table_name (col1, col2) values ('Hello', 1);

现有记录:

+--------------------+
| table_name         |
+--------------------+
| id  | col1  | col2 |
+--------------------+
| 2   | Hello | 1    |
|     |       |      |

3 个答案:

答案 0 :(得分:0)

你的问题不明确。 MYSQL仅适用于id。如果你想让它在col1上工作那么你可以写这样的东西

INSERT IGNORE INTO table_name (col1, col2) 
values ('Hello', 1) WHERE NOT EXISTS ( SELECT col1 from table_name 
                                       WHERE col1 = 'Hello')

但是再添加一些描述来正确回答它。

答案 1 :(得分:0)

我相信ON DUPLICATE KEY UPDATE适合您的情况

示例查询:

INSERT INTO table_name (id, col1, col2) VALUES (1,'Hello', 1)
ON DUPLICATE KEY UPDATE col1 = col1,col2 = col2;

更新:我在查询中添加了id列值。此查询检查id=1是否已存在然后不会插入,如果不存在则会插入

更新

<小时/> 如果您想检查col1列的重复内容,则必须在此列

上添加unique constrain

ALTER TABLE table_name ADD UNIQUE (col1)

现在查询插入和检查重复是:

INSERT INTO table_name (col1, col2) VALUES ('Hello', 1)
ON DUPLICATE KEY UPDATE col1 = col1,col2 = col2;
  

如果指定 ON DUPLICATE KEY UPDATE ,则插入一行   会导致 UNIQUE索引 PRIMARY KEY

中的重复值

答案 2 :(得分:0)

您可以使用ON DUPLICATE插入记录,如果存在,则会更新。如果不存在,它将插入 例如:

  Insert into table_name (col1, col2) values ('Hello', 1);
      ON DUPLICATE KEY UPDATE col1=values(col1),col2=values(col2)