使用Mysql中的id从表中删除许多行

Kev*_*ker 65 mysql sql sql-delete

我是一名Linux管理员,只掌握Mysql查询的基本知识

我想使用id删除许多表条目,这些表条目是我的表中的ip地址,

目前我正在使用

DELETE from tablename where id=1;
DELETE from tablename where id=2;
Run Code Online (Sandbox Code Playgroud)

但我必须删除254个条目,所以这个方法需要几个小时,我怎么能告诉mysql删除我指定的行,因为我想跳过删除254中的一些条目.

删除整个表并导入所需的条目不是一种选择.

JoD*_*Dev 159

最好的方法是使用IN声明:

DELETE from tablename WHERE id IN (1,2,3,...,254);
Run Code Online (Sandbox Code Playgroud)

BETWEEN如果您有连续的ID,也可以使用:

DELETE from tablename WHERE id BETWEEN 1 AND 254;
Run Code Online (Sandbox Code Playgroud)

您当然可以使用其他WHERE子句限制某些ID:

DELETE from tablename WHERE id BETWEEN 1 AND 254 AND id<>10;
Run Code Online (Sandbox Code Playgroud)


Joh*_*Woo 7

如何使用 IN

DELETE FROM tableName
WHERE ID IN (1,2) -- add as many ID as you want.
Run Code Online (Sandbox Code Playgroud)


Viv*_*odi 6

如果您的数据中有一些“条件”来找出 254 个 id,您可以使用:

delete from tablename
where id in 
(select id from tablename where <your-condition>)
Run Code Online (Sandbox Code Playgroud)

或者简单地:

delete from tablename where <your-condition>
Run Code Online (Sandbox Code Playgroud)

无论如何,简单地对 id 列的 254 个值进行硬编码都是非常困难的。

  • 就像 @tom10271 所说,这应该在 MySQL 中产生“You can'tspecify target table in FROM Clause” (2认同)

cow*_*wls 5

像这样的东西可能会让它变得更容易一些,你显然可以使用脚本来生成它,甚至可以表现出色

DELETE FROM tablename WHERE id IN (
1,
2,
3,
4,
5,
6
);
Run Code Online (Sandbox Code Playgroud)


Ghi*_*igo 5

如果你只需要保留几行,请考虑

DELETE FROM tablename WHERE id NOT IN (5,124,221);
Run Code Online (Sandbox Code Playgroud)

这将仅保留一些记录并丢弃其他记录.