在键上插入多个更新那些多个
insert multiple on key update those multiple
这是一个常见的话题,但我找不到答案...
我必须插入或更新 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'
两个键的更新应该引用不同的键,他们更新了其中的两个,问题是他们用最后一个值更新了它,所以两个记录都得到 created_by='mysql2'
如何将值更改为不同的键?
提前致谢!
您可以在 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
.
限定列列表中的列名称
在 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)
这是一个常见的话题,但我找不到答案... 我必须插入或更新 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'
两个键的更新应该引用不同的键,他们更新了其中的两个,问题是他们用最后一个值更新了它,所以两个记录都得到 created_by='mysql2'
如何将值更改为不同的键?
提前致谢!
您可以在 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
.
在 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)