所以我有一个$items= array(13, 19, 22, 3129);
如何在我的 DELETE 查询 sql 中不包含具有这些 id 的行?
DELETE FROM table1
WHERE id NOT IN (13, 19, 22, 3129)
在 PHP 中,您可以使用implode()函数来构建 IN 子句。
$items = implode(",", $items);
$sql = "DELETE FROM table1 WHERE id NOT IN ({$items})";
使用 implode 但不要设置相同的数组变量,因为您稍后可能会在程序中使用它,因为也不建议或将其作为良好的编程习惯来更改变量的数据类型。
$items= array(13, 19, 22, 3129);
$sql = sprintf("delete from tbl where id_col not in (%s)",implode(",", $items));
如果mytable
很大但要保留的条目数量很小,这是一种更快的方法
$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);