Tengo un problema con mis consultas en MySQL. Mi tabla tiene 4 columnas y se ve así:
id_users id_product quantity date
1 2 1 2013
1 2 1 2013
2 2 1 2013
1 3 1 2013
id_users
y id_product
son claves foráneas de diferentes tablas.
Lo que quiero es eliminar solo una fila:
1 2 1 2013
Que aparece dos veces, así que solo quiero eliminarlo.
He intentado esta consulta:
delete from orders where id_users = 1 and id_product = 2
Pero los eliminará a ambos (ya que están duplicados). ¿Alguna pista para resolver este problema?
mysql
delete-row
Dani
fuente
fuente
Todas las tablas deben tener una clave primaria (que consta de una o varias columnas), las filas duplicadas no tienen sentido en una base de datos relacional. Sin
LIMIT
embargo, puede limitar el número de filas eliminadas mediante :Pero eso solo resuelve su problema actual, definitivamente debería trabajar en el problema más grande definiendo las claves principales.
fuente
Debe especificar el número de filas que se deben eliminar. En su caso (y supongo que solo desea conservar uno), esto puede hacerse así:
fuente
La mejor manera de diseñar una tabla es agregar una fila temporal como incremento automático y mantenerla como clave principal. Entonces podemos evitar tales problemas anteriores.
fuente
Ya hay respuestas para Eliminar fila por
LIMIT
. Idealmente, debe tener la clave principal en su tabla. Pero si no hay.Daré otras formas:
Veo id_users e id_product deberían ser únicos en su ejemplo.
Estos eliminarán filas duplicadas con los mismos datos.
Pero si aún recibe un error, incluso si usa la cláusula IGNORE, intente esto:
Si hay varias filas que tienen valores duplicados, también puede volver a crear la tabla
fuente
Debe agregar una identificación que se incremente automáticamente para cada fila, después de eso puede eliminar la fila por su identificación. entonces su tabla tendrá una identificación única para cada fila y el id_user, id_product ecc ...
fuente