我是Linux管理员,仅具有Mysql Queries中的基本知识
我想使用id从我的表中删除许多表条目,这些条目是ip地址。
目前我正在使用
DELETE from tablename where id=1;
DELETE from tablename where id=2;
但是我必须删除254个条目,所以此方法将要花费数小时,我如何告诉mysql删除我指定的行,因为我想跳过从这254个条目中删除一些条目。
不能删除整个表并导入所需的条目。
我是Linux管理员,仅具有Mysql Queries中的基本知识
我想使用id从我的表中删除许多表条目,这些条目是ip地址。
目前我正在使用
DELETE from tablename where id=1;
DELETE from tablename where id=2;
但是我必须删除254个条目,所以此方法将要花费数小时,我如何告诉mysql删除我指定的行,因为我想跳过从这254个条目中删除一些条目。
不能删除整个表并导入所需的条目。
Answers:
最好的方法是使用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;
>
和<
)比IN
性能要好。使用说明语句,查看如何IN
不使用索引。
其他人建议IN
,这很好。您还可以使用范围:
DELETE from tablename where id<254 and id>3;
如果要删除的ID是连续的。
如果您的数据中有一些“条件”来找出254个ID,则可以使用:
delete from tablename
where id in
(select id from tablename where <your-condition>)
或者简单地:
delete from tablename where <your-condition>
在任何情况下,简单地对id列的254个值进行硬编码都是非常困难的。
DELETE FROM table_name WHERE id BETWEEN 1 AND 256;
尝试这个。
希望能帮助到你:
DELETE FROM tablename
WHERE tablename.id = ANY (SELECT id FROM tablename WHERE id = id);
DELETE from tablename where id<254 and id>3;
东西都会起作用。