0

我有一个追随者

Table1 : userid, who, share, date  :: id is auto increment and primary key

我想建立一个查询来检查记录是否存在,如果为空则插入新记录。如何在单个查询中构建它并使用单个查询插入多条记录

data to inser ('a1','a2','a3','a4'), ('b1','b2','b3','b4'), ('c1','c2','c3','c4'), .......
4

3 回答 3

2
  1. UNIQUE在您想要唯一的列上创建索引
  2. Use INSERT IGNORE to insert unique data and ignore not unique
于 2012-02-10T13:24:23.960 回答
0

您应该仔细查看mysqlINSERT INTO文档

如何插入“不存在”很简单。假设您希望组合user,who,share独一无二并使用最新日期。更新您的表格并UNIQUE KEY在这些字段上创建:

ALTER TABLE Table1 ADD UNIQUE KEY (user, who, share);

通常插入相同的组合会导致错误,但使用INSERT IGNORE(上面的链接)会默默地忽略错误:

INSERT IGNORE INTO Table1 (user,who,share,date) VALUES ( 1, 2, 3, NOW());

您还可以强制在插入时更新密钥:

INSERT IGNORE INTO Table1 (user,who,share,date) VALUES ( 1, 2, 3, NOW())
       ON DUPLICATE KEY UPDATE date = VALUES(date);

并一次插入多个值,再次是第一个链接:

INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);
于 2012-02-10T13:29:48.723 回答
0

您可以使用像 INSERT 一样工作的 REPLACE 语句,但如果该行已经存在,它不会做任何事情:

REPLACE INTO table ...

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

于 2012-02-10T13:25:11.773 回答