Eliminar pero mantener filas con id en matriz php/mysql

Entonces tengo un $items= array(13, 19, 22, 3129);

¿Cómo puedo simplemente no incluir las filas con estas identificaciones en mi consulta DELETE sql?

preguntado el 22 de mayo de 12 a las 18:05

3 Respuestas

DELETE FROM table1
WHERE id NOT IN (13, 19, 22, 3129)

En PHP, puede utilizar el implosión () función para construir la cláusula IN.

$items = implode(",", $items);    
$sql = "DELETE FROM table1 WHERE id NOT IN ({$items})";

contestado el 22 de mayo de 12 a las 18:05

Use implode pero no configure la misma variable de matriz que podría usar más adelante en su programa, ya que tampoco se recomienda ni se toma como una buena práctica de programación cambiar el tipo de datos de una variable así como así.

$items= array(13, 19, 22, 3129);
$sql = sprintf("delete from tbl where id_col not in (%s)",implode(",", $items));

contestado el 22 de mayo de 12 a las 19:05

If mytable es grande pero el número de entradas a mantener es pequeño, aquí hay una forma más rápida

$items= array(13, 19, 22, 3129); 
$sql = "CREATE TABLE mynewtable LIKE mytable";
mysql_query($sql);
$id_list = sprintf("(%s)",implode(",", $items)); 
$sql = "INSERT INTO mynewtable SELECT * FROM mytable WHERE id_col IN " . $id_list; 
mysql_query($sql);
$sql = "DROP TABLE mytable";
mysql_query($sql);
$sql = "ALTER TABLE mynewtable RENAME mytable";
mysql_query($sql);

contestado el 22 de mayo de 12 a las 19:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.