这是一个常见话题,但我找不到答案...... 我必须插入或更新1000条记录,我想要做的就是这个
INSERT INTO contacts
(contacts.tipo_contacto,
contacts.date_entered,
contacts.date_modified,
contacts.created_by,
contacts.id)
VALUES ('INSERTED',now(), now(), 'MYSQL', '55ae1a2715c9a'),
('INSERTED', now(), now(), 'MYSQL', '55ae1a2718a47')
ON DUPLICATE KEY UPDATE
tipo_contacto='UPDATED',
date_modified=now(),
created_by='mysql' ,
tipo_contacto='UPDATED',
date_modified=now(),
created_by='mysql2'
两个密钥更新应该引用不同的密钥并且他们更新其中两个问题是他们用最后一个值更新它所以两个记录都被创建_by ='mysql2'
如何将值更改为不同的键?
提前谢谢!
答案 0 :(得分:1)
您可以在on duplicate key update
:
INSERT INTO contacts(tipo_contacto, date_entered, date_modified, created_by, id)
VALUES ('INSERTED', now(), now(), 'MYSQL', '55ae1a2715c9a'),
('INSERTED', now(), now(), 'MYSQL', '55ae1a2718a47')
ON DUPLICATE KEY UPDATE
tipo_contacto = 'UPDATED',
date_modified = now(),
created_by = (case when VALUES(id) = '55ae1a2715c9a' then 'mysql' else 'mysql2' end);
注意:您不能在insert
的列列表中限定列名称。
答案 1 :(得分:0)
在ON DUPLICATE KEY UPDATE
子句中,您可以使用VALUES(column_name)
来引用在没有重复时插入的值。
INSERT INTO contacts
(contacts.tipo_contacto, contacts.date_entered, contacts.date_modified, contacts.created_by, contacts.id)
VALUES
('INSERTED', now(), now(), 'MYSQL', '55ae1a2715c9a'),
('INSERTED', now(), now(), 'MYSQL', '55ae1a2718a47')
ON DUPLICATE KEY UPDATE
tipo_contacto=VALUES(tipo_contacto), date_modified=VALUES(date_modified), created_by=VALUES(created_by)