Quiero hacer algo como estoINSERT INTO .. EN DUPLICADO KEY UPDATE por varios elementos,
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';
t.a y t.b 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 como esto sería bueno también, pero tendré que 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, lo que debo poner allí para que cada inserción/actualización tendrá el valor correcto? Obviamente, si pongo un valor, todos los campos obtendrán ese valor.
Si hay otra manera de hacer una "actualización si existe, de lo contrario inserte" la 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.
Brilliant! Y maldito sea SQL por ser tan poco intuitivo ... – pixelfreak
mysql> INSERT INTO param (id, num) VALUES (3,4) EN DUPLICATE KEY UPDATE id = VALUES ( d) +222; Consulta OK, 2 filas afectadas (0,67 seg) – zloctb