values update into ejemplo duplicate mysql

mysql - into - on duplicate key update php



INSERT INTO.. ​​ON DUPLICATE KEY UPDATE para varios elementos (2)

Quiero hacer algo como esto

INSERT INTO t (t.a, t.b, t.c) VALUES (''key1'',''key2'',''value'') ON DUPLICATE KEY UPDATE t.c = ''value''; INSERT INTO t (t.a, t.b, t.c) VALUES (''key1'',''key3'',''value2'') ON DUPLICATE KEY UPDATE t.c = ''value2'';

ta y tb son claves. Todo esto funciona bien pero recibo un error en el segundo inserto. Con phpMyAdmin, una consulta como esta funciona bien, pero supongo que está ejecutando las consultas de forma independiente, ya que imprime los resultados de esa consulta como comentarios.

Algo así también sería bueno, pero necesitaré tener diferentes valores para cada artículo. Prefiero esto, pero no estoy seguro de cómo puedo cambiar el valor de la actualización para cada valor.

INSERT INTO t (t.a, t.b, t.c) VALUES (''key1'',''key2'',''value''), (''key1'',''key3'',''value2'') ON DUPLICATE KEY UPDATE t.c = ???

El problema está en los signos de interrogación, ¿qué debería poner allí para que cada inserción / actualización tenga el valor correcto? Obviamente, si pongo un valor, todos los campos obtendrán ese valor.

Si hay otra forma de hacer una "actualización si existe, de lo contrario inserte" consulta en múltiples campos con dos claves, también estoy preparado para otras ideas. Supongo que podría ejecutar cada consulta por separado (como phpMyAdmin?) Pero va a haber muchas consultas, así que realmente quiero evitar eso.



Demasiado bajo en la reputación para hacer comentarios, pero quería agregar una sintaxis un poco más compleja inspirada en la respuesta @ ʞɔıu. Para actualizar varios campos en clave duplicada:

INSERT INTO t (t.a, t.b, t.c, t.d) VALUES (''key1'',''key2'',''value'',''valueb''), (''key1'',''key3'',''value2'',''value2b'') ON DUPLICATE KEY UPDATE t.c = VALUES(t.c), t.d = VALUES(t.d)

Espero que ayude a alguien por ahí a buscar realizar una inserción masiva con múltiples actualizaciones duplicadas. La sintaxis se me escapó.