php mysql insert with where子句选择多个

时间:2012-02-10 13:21:20

标签: php mysql insert-select

我有以下

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'), .......

3 个答案:

答案 0 :(得分:2)

  1. 在您想要独特的列上创建UNIQUE索引
  2. 使用INSERT IGNORE插入唯一数据并忽略非唯一

答案 1 :(得分:0)

您可以使用与INSERT类似的REPLACE语句,只有在行已存在的情况下它才会执行任何操作:

REPLACE INTO table ...

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

答案 2 :(得分:0)

您应该仔细查看mysql INSERT INTO documentation

如何插入“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());

您也可以{:3}插入:

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);