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)
如何使用 IN
DELETE FROM tableName
WHERE ID IN (1,2) -- add as many ID as you want.
Run Code Online (Sandbox Code Playgroud)
如果您的数据中有一些“条件”来找出 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 个值进行硬编码都是非常困难的。
像这样的东西可能会让它变得更容易一些,你显然可以使用脚本来生成它,甚至可以表现出色
DELETE FROM tablename WHERE id IN (
1,
2,
3,
4,
5,
6
);
Run Code Online (Sandbox Code Playgroud)
如果你只需要保留几行,请考虑
DELETE FROM tablename WHERE id NOT IN (5,124,221);
Run Code Online (Sandbox Code Playgroud)
这将仅保留一些记录并丢弃其他记录.