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.