2016-11-22 115 views
0

我正在处理一个相当大的数据库(MySQL),超过20,000条记录,我需要删除一些选定的记录。例如我删除了记录3106,我需要删除3107,3108,3207,3458,3414。我只是不知道如何多次删除。删除MySQL中的范围

例子:

DELETE FROM `serial_codes` WHERE `serial_codes`.`SerialID` = 3106 LIMIT 1; 

回答

0

使用in功能:

DELETE FROM `serial_codes` WHERE `serial_codes`.`SerialID` in (3106, 3107,...) 

OR

DELETE FROM `serial_codes` WHERE `serial_codes`.`SerialID` = 3106 or `serial_codes`.`SerialID` = 3107 or ... 
+0

为什么你用大写字母(比如好的编码风格)来写所有的标记,而用小写字母来写“IN”呢?干净的代码兄弟! – DanFromGermany

+0

@DanFromGermany大写标记从问题中复制而来。 – Jens

+0

非常感谢,我只是试过这个,它很有魅力。同时也感谢大家对你的快速回应,你一直是一个真正的帮助。 – nathancording

0

你需要使用SQL in

DELETE FROM `serial_codes` WHERE `serial_codes`.`SerialID` in (3107,3108,3207,3458,3414) 
0

最简单的方法(如果您事先知道该ID)是使用IN()

expr IN (value,...) 

实施例:

DELETE FROM `serial_codes` 
     WHERE `serial_codes`.`SerialID` IN (3016, 3107, 3108, 3207, 3458, 3414) 

LIMIT该子句可以省略作为结果集要被删除被限制到值在IN()功能的量。

如果你有序贯的id被删除(如1,2,3,...),真正的范围,你也可以使用BETWEEN

expr BETWEEN min AND max 

例子:

DELETE FROM `serial_codes` 
     WHERE `serial_codes`.`SerialID` BETWEEN 1 AND 10