sintaxis - Insertar en una tabla MySQL o actualizar si existe
replace sintaxis mysql (9)
Cuando se usa SQLite:
REPLACE into table (id, name, age) values(1, "A", 19)
Siempre que id
es la clave principal. O bien, simplemente inserta otra fila. Ver INSERT (SQLite).
Quiero agregar una fila a una tabla de base de datos, pero si existe una fila con la misma clave única, quiero actualizar la fila.
Por ejemplo,
insert into table (id, name, age) values(1, "A", 19)
Digamos que la clave única es id
, y en mi base de datos hay una fila con id = 1
. En ese caso quiero actualizar esa fila con estos valores. Normalmente esto da un error. Si uso insert IGNORE
, ignorará el error, pero no se actualizará.
Cuando use la inserción por lotes use la siguiente sintaxis:
INSERT INTO TABLE (id, name, age) VALUES (1, "A", 19), (2, "B", 17), (3, "C", 22)
ON DUPLICATE KEY UPDATE
name = VALUES (name),
...
Echa un vistazo a REEMPLAZAR
http://dev.mysql.com/doc/refman/5.0/en/replace.html
REPLACE into table (id, name, age) values(1, "A", 19)
Probar esto:
INSERT INTO table (id, name, age) VALUES (1, ''A'', 19) ON DUPLICATE KEY UPDATE id = id + 1;
Espero que esto ayude.
Prueba esto:
INSERT INTO table (id,name,age) VALUES(''1'',''Mohammad'',''21'') ON DUPLICATE KEY UPDATE name=''Mohammad'',age=''21''
Nota:
Aquí si id es la clave principal, luego de la primera inserción con id=''1''
cada vez que intente insertar id=''1''
se actualizarán el nombre y la edad, y la edad del nombre anterior cambiará.
Solo porque estaba aquí buscando esta solución, pero para actualizar desde otra tabla idénticamente estructurada (en mi caso, el sitio web DB de prueba para vivir DB):
INSERT live-db.table1
SELECT *
FROM test-db.table1 t
ON DUPLICATE KEY UPDATE
ColToUpdate1 = t.ColToUpdate1,
ColToUpdate2 = t.ColToUpdate2,
...
Como se mencionó en otra parte, solo las columnas que desea actualizar deben incluirse después de ON DUPLICATE KEY UPDATE
.
No es necesario enumerar las columnas en INSERT
o SELECT
, aunque estoy de acuerdo en que probablemente sea una mejor práctica.
Utilice INSERT ... ON DUPLICATE KEY UPDATE
CONSULTA:
INSERT INTO table (id, name, age) VALUES(1, "A", 19) ON DUPLICATE KEY UPDATE
name="A", age=19
INSERT IGNORE INTO table (id, name, age) VALUES (1, "A", 19);
INTO TABLE (id, name, age) VALUES(1, "A", 19) ON DUPLICATE UPDATE SET NAME = "A", AGE = 19;
REPLACE INTO table (id, name, age) VALUES(1, "A", 19);
Todas estas soluciones funcionarán con respecto a su pregunta.
Si desea saber en detalle sobre esta declaración visite este enlace
INSERT INTO table (id, name, age) VALUES (1, ''A'', 19) ON DUPLICATE KEY UPDATE id = id + 1;
Además, no se olvide de preocuparse por la restricción clave única.
ALTER TABLE `table` ADD UNIQUE `unique_key` ( `id` )