我有以下
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'), .......
- 在希望唯一的列上创建
UNIQUE
索引 - 使用
INSERT IGNORE
插入唯一数据并忽略非唯一数据
您可以使用REPLACE statemement,它的工作原理与INSERT类似,只是如果行已经存在,它不会做任何事情:
REPLACE INTO table ...
http://dev.mysql.com/doc/refman/5.0/en/replace.html
您应该仔细查看mysql INSERT INTO
文档。
如何插入"on no exists"很简单。假设您希望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);