varias valor una seleccionar registros registro obtener mayor maximo mas grupo consulta con columnas columna campo cada alto agrupar mysql unique-constraint multiple-records

valor - MySQL elimina múltiples filas en una sola consulta condiciones únicas para cada fila



seleccionar el valor mas alto mysql (2)

Estuviste muy cerca, puedes usar esto:

DELETE FROM table WHERE (col1,col2) IN ((1,2),(3,4),(5,6))

Por favor vea este fiddle .

Así que sé que en MySQL es posible insertar varias filas en una consulta, así:

INSERT INTO table (col1,col2) VALUES (1,2),(3,4),(5,6)

Me gustaría eliminar varias filas de una manera similar. Sé que es posible eliminar varias filas según las mismas condiciones exactas para cada fila, es decir,

DELETE FROM table WHERE col1=''4'' and col2=''5''

o

DELETE FROM table WHERE col1 IN (1,2,3,4,5)

Sin embargo, ¿qué sucede si quisiera eliminar varias filas en una consulta, y cada fila tiene un conjunto de condiciones únicas para sí misma? Algo como esto sería lo que estoy buscando:

DELETE FROM table WHERE (col1,col2) IN (1,2),(3,4),(5,6)

¿Alguien sabe de una manera de hacer esto? ¿O acaso no es posible?


Una pequeña extensión a la respuesta dada, por lo tanto, espero que sea útil para el autor de la pregunta y para cualquier otra persona que busque.

También puede seleccionar los valores que desea eliminar. Pero tenga cuidado con el error 1093: no puede especificar la tabla de destino para actualizar en la cláusula FROM.

DELETE FROM orders_products_history WHERE (branchID, action) IN ( SELECT branchID, action FROM ( SELECT branchID, action FROM orders_products_history GROUP BY branchID, action HAVING COUNT(*) > 10000 ) a );

Quería eliminar todos los registros históricos en los que el número de registros históricos para una sola acción / rama supera los 10,000. Y gracias a esta pregunta y respuesta elegida, puedo.

Espero que esto sea de utilidad.

Ricardo.