Hay una manera de eliminar registro de clave duplicados en MySQL?

Decir que tenemos un registro en la base de datos con la específica de la clave principal y tratamos de añadir otro con la misma clave – ON DUPLICATE KEY UPDATE simplemente actualizar el registro, pero hay una opción para eliminar el registro si ya existe? Es por simple in/out funcionalidad en el clic de un botón.

El uso de desencadenar
Gracias, creo que la única opción.

OriginalEl autor Spencer Mark | 2012-07-15

4 Comentarios

  1. 9

    Es un trabajo, pero funciona:

    Crear una nueva columna llamada se do_delete, o lo que sea, lo que es una pequeña-int. A continuación, hacer On Duplicate Key Update do_delete = 1;

    Dependiendo de su versión de MySQL/conexión, puede ejecutar varias consultas en la misma instrucción. Sin embargo, si no, solo hay que ejecutar una consulta independiente de inmediato epílogos. De cualquier manera, la siguiente pregunta sería: Delete From [table] Where do_delete = 1;. De esta manera, si su una nueva entrada, no se borra nada. Si no era una nueva entrada, entonces se marca para su eliminación, a continuación, usted puede eliminar.

    Me gusta esta opción y no necesito cambiar mi instrucción update.
    Solución brillante! Gracias

    OriginalEl autor James

  2. 4

    Uso REEMPLAZAR EN:

    replace into some_table
    select somecolumn from othertable

    va a insertar nuevos datos o si thr mismo existen datos que va a eliminar los datos e inserte el nuevo

    El rendimiento de reemplazar en vs en DUPLICADO EN la ACTUALIZACIÓN, son diferentes. REEMPLAZAR EN no actualizar el registro – eliminar el registro y añadir de nuevo, si usted tiene toneladas de datos y los índices involucrados, puede tomar un tiempo … mejor usar en DUPLICADO EN ACTUALIZAR, pero él está pidiendo a QUITAR algo así como EN ELIMINAR DUPLICADOS

    OriginalEl autor juergen d

  3. 1

    Lo más cercana posible solución para el mismo es REPLACE declaración. Aquí está el documentación para REEMPLAZAR.

    Una pregunta similar se le preguntó sobre la MySQL En Foros y la recomienda(y única) respuesta fue el uso de REPLACE.

    Sí, pero eso no es lo que estoy buscando – no quiero reemplazar el elemento en la base de datos si existe deseo de deshacerse de él a todos juntos.
    Supongo que la única opción (si la anterior es la única solución posible) en ese caso será ejecutar instrucciones individuales – primero para comprobar si el registro se encuentra a continuación, basado en el resultado de agregar o quitar.
    o crear un BOOLEAN o ENUM columna y configurar de 0 o 1, dependiendo de que usted lo quiere o no.

    OriginalEl autor hjpotter92

  4. -2

    Sí, por supuesto que hay soluciones en MySQL para su problema.

    Si quieres eliminar u omitir la nueva inserción de registro si existe ya un registro duplicado existe en la columna de clave de la tabla, puede utilizar IGNORAR como este:

    insert ignore into mytbl(id,name) values(6,'ron'),(7,'son');

    Aquí id columna de clave principal en la tabla mytbl. Esto va a insertar varios valores en la tabla eliminando o saltarse los nuevos registros duplicados.

    La esperanza de que este va a cumplir su requisito.

    insert ignore NO borra nada

    OriginalEl autor Abhik Dey

Dejar respuesta

Please enter your comment!
Please enter your name here