validar - mysql: inserte el registro si no existe, devuelva el ID del registro
sql ver si existe registro (4)
Aquí está el estado de mysql para insertar, si no existe, y devolver la identificación ya sea nueva inserción o antigua
INSERT INTO `tags` (`tag`)
SELECT ''myvalue1''
FROM tags
WHERE NOT EXISTS (SELECT id FROM `tags` WHERE `tag`=''myvalue1'')
LIMIT 1;
select * from brand where `tag`=''myvalue1''
Necesito insertar valores únicos en una tabla, y necesito los identificadores de los registros. Necesito insertar esos identificadores en la tabla de relaciones. Necesito la consulta para insertar el registro. Si no existe, devuelva el identificador de inserción, si existe devuelva la clave principal del registro ).
y quiero hacer esto para varios valores, como naranja, mango, plátano, como inserto por lotes.
esquema:
------------
id | tag |
------------
1 | orange|
------------
Tengo trid esto para un solo registro
INSERT INTO `tags` (`tag`)
SELECT ''myvalue1''
FROM tags
WHERE NOT EXISTS (SELECT 1 FROM `tags` WHERE `tag`=''myvalue1'')
LIMIT 1
publiqué la pregunta para encontrar alguna solución optimizada, no quiero usar bucles adicionales en el código para coincidir con los valores de db.
Hay 4 métodos enumerados en el siguiente enlace, por favor, eche un vistazo y use el que más le convenga.
Método 1: SELECCIONE, luego INSERTE Método 2: intente {INSERT} capturar {SELECCIONAR} Método 3: INSERTE IGNORAR y luego SELECCIONE Método 4: INSERTE EN ... EN LA ACTUALIZACIÓN DE LA TECLA DUPLICADA
http://mikefenwick.com/blog/insert-into-database-or-return-id-of-duplicate-row-in-mysql/
Hay un ejemplo en la página de documentación para INSERT ... ON DUPLICATE KEY UPDATE
:
Su consulta se vería así:
INSERT INTO `tags` (`tag`) VALUES (''myvalue1'')
ON DUPLICATE KEY UPDATE id=LAST_INSERT_ID(id), `tag`=''myvalue1'';
SELECT LAST_INSERT_ID();
Insertar en una tabla MySQL o actualizar si existe
Esto resolvería tu problema? Creo que eso resolvería la mayoría de tus problemas si traduces su respuesta a un formato que funcione para ti.