我知道你可以使用ON DUPLICATE KEY UPDATE来更新一个特定的值,如果这个键已经有logging的话, 我可以做这个: INSERT INTO `tableName` (`a`,`b`,`c`) VALUES (1, 2, 3) ON DUPLICATE KEY UPDATE `a`=1, `b`=2, `c`=3 但是,我怎样才能做到这一点,而不必两次写出列和值?
我搜查了周围,但没有发现是否有可能。 我有这个MySQL查询: INSERT INTO table (id,a,b,c,d,e,f,g) VALUES (1,2,3,4,5,6,7,8) 字段ID有一个“唯一索引”,所以不能有两个。 现在,如果数据库中已经存在相同的ID,我想更新它。 但是我真的必须重新指定所有这些领域,如: INSERT INTO table (id,a,b,c,d,e,f,g) VALUES (1,2,3,4,5,6,7,8) ON DUPLICATE KEY UPDATE a=2,b=3,c=4,d=5,e=6,f=7,g=8 要么: INSERT INTO table (id,a,b,c,d,e,f,g) VALUES (1,2,3,4,5,6,7,8) ON DUPLICATE KEY UPDATE a=VALUES(a),b=VALUES(b),c=VALUES(c),d=VALUES(d),e=VALUES(e),f=VALUES(f),g=VALUES(g) 我已经指定了插入中的所有内容… 一个额外的笔记,我想使用的工作,以获得ID! id=LAST_INSERT_ID(id) 我希望有人能告诉我最有效的方法是什么。
我目前有一个主键ID设置为auto increment 。 它不断递增ON DUPLICATE KEY 。 例如: ID | field1 | field2 1 | user | value 5 | secondUser | value 86 | thirdUser | value 从上面的描述中,您会注意到在该表中有3个input,但是由于每次更新都会自动增加,所以第三个input的ID为86。 有没有办法避免这种情况? 以下是我的mySQL查询的样子: INSERT INTO table ( field1, field2 ) VALUES (:value1, :value2) ON DUPLICATE KEY UPDATE field1 = :value1, field2 = :value2 这就是我的桌子的样子 CREATE TABLE IF […]
为了将大量的数据加载到MySQL中, LOAD DATA INFILE是最快的select。 不幸的是,虽然这可以以INSERT IGNORE或REPLACE的方式使用,但是当前不支持ON DUPLICATE KEY UPDATE。 但是, ON DUPLICATE KEY UPDATE上比REPLACE有优势。 当存在重复时,后者执行删除和插入操作。 这为密钥pipe理带来了开销。 此外,自动增量ID将不会保持不变。 在使用LOAD DATA INFILE时,如何模拟ON DUPLICATE KEY UPDATE ?