2

所以我有一个$items= array(13, 19, 22, 3129);

如何在我的 DELETE 查询 sql 中不包含具有这些 id 的行?

4

3 回答 3

5
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})";
于 2012-05-22T17:47:48.467 回答
1

使用 implode 但不要设置相同的数组变量,因为您稍后可能会在程序中使用它,因为也不建议或将其作为良好的编程习惯来更改变量的数据类型。

$items= array(13, 19, 22, 3129);
$sql = sprintf("delete from tbl where id_col not in (%s)",implode(",", $items));
于 2012-05-22T18:01:23.873 回答
1

如果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);
于 2012-05-22T18:21:51.833 回答