2011-12-04 9 views
26

Mi tabla innodb tiene la siguiente estructura: 4 columnas (CountryID, Year, %Change, Source), con las 2 columnas (CountryID, Year) como clave principal. ¿Cómo elimino varias filas además de usar un for-loop para eliminar cada fila?¿Cómo se eliminan varias filas con 2 columnas como clave primaria compuesta en MySQL?

Busco algo similar a

DELETE FROM CPI 
WHERE CountryID AND Year IN (('AD', 2010), ('AF', 2009), ('AG', 1992)) 

encontrado la respuesta después de más ajustes:

DELETE FROM CPI 
WHERE (CountryID, Year) IN (('AD', 2010), ('AF', 2009), ('AG', 1992)) 

Esperanza esto ayuda a alguien por ahí en la misma salmuera.

+0

¿Puedes publicar el mensaje de error? ¿Qué no está funcionando? Parece que debería funcionar para mí. ¿Tienes tablas dependientes? –

+0

hola carl. hmm .. Acabo de aclarar mi pregunta después de ver tu comentario. con suerte, la edición lo explica mejor. –

+0

woops, lo encontré. editó la pregunta para reflejar la respuesta. ¡gracias a todos! –

Respuesta

29

La respuesta de Oracle es:

delete from cpi 
where (countryid, year) in (('AD', 2010), ('AF', 2009), ('AG', 1992)) 

Su sintaxis SQL bastante estándar y creo que MySQL es la misma.

+0

ahaha, acaba de editar mi pregunta para el mismo. gracias Ben! –

+2

Esto funciona en MySQL –

+1

gracias! probado en MySQL también y funciona como un encanto! –

Cuestiones relacionadas