82

我是一名 Linux 管理员,只了解 MySQL 查询的基本知识

我想使用id从我的表中删除许多作为 ip 地址的表条目,

目前我正在使用

DELETE from tablename where id=1;
DELETE from tablename where id=2;

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

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

4

10 回答 10

206

最好的方法是使用IN语句:

DELETE from tablename WHERE id IN (1,2,3,...,254);

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

DELETE from tablename WHERE id BETWEEN 1 AND 254;

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

DELETE from tablename WHERE id BETWEEN 1 AND 254 AND id<>10;
于 2013-03-19T15:48:25.217 回答
8

如何使用IN

DELETE FROM tableName
WHERE ID IN (1,2) -- add as many ID as you want.
于 2013-03-19T15:45:38.910 回答
6

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

DELETE FROM tablename WHERE id NOT IN (5,124,221);

这将只保留一些记录并丢弃其他记录。

于 2013-03-19T15:49:11.750 回答
5

像这样的东西可能会让它更容易一些,你显然可以使用脚本来生成它,甚至是 excel

DELETE FROM tablename WHERE id IN (
1,
2,
3,
4,
5,
6
);
于 2013-03-19T15:46:00.450 回答
4

其他人建议IN,这很好。您还可以使用范围:

DELETE from tablename where id<254 and id>3;

如果要删除的 id 是连续的。

于 2013-03-19T15:49:20.187 回答
4

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

delete from tablename
where id in 
(select id from tablename where <your-condition>)

或者简单地说:

delete from tablename where <your-condition>

在任何情况下,简单地对 id 列的 254 个值进行硬编码都是非常困难的。

于 2013-03-19T15:52:47.010 回答
3

使用IN条款

   DELETE from tablename where id IN (1,2);

或者您可以合并使用BETWEENNOT IN以减少您必须提及的数字。

DELETE from tablename 
where (id BETWEEN 1 AND 255) 
AND (id NOT IN (254));
于 2013-03-19T15:46:29.683 回答
2
DELETE FROM table_name WHERE id BETWEEN 1 AND 256;

试试这个。

于 2014-09-30T10:23:54.830 回答
2

希望能帮助到你:

DELETE FROM tablename 
WHERE tablename.id = ANY (SELECT id FROM tablename WHERE id = id);
于 2019-02-10T09:17:12.833 回答
0
DELETE FROM tablename WHERE id > 0;
OR
DELETE FROM tablename WHERE id <255;

它从 1 到 254 删除 id

于 2021-07-08T23:24:07.683 回答