我正在处理一个相当大的数据库(MySQL),超过20,000条记录,我需要删除一些选定的记录。例如我删除了记录3106,我需要删除3107,3108,3207,3458,3414。我只是不知道如何多次删除。删除MySQL中的范围
例子:
DELETE FROM `serial_codes` WHERE `serial_codes`.`SerialID` = 3106 LIMIT 1;
我正在处理一个相当大的数据库(MySQL),超过20,000条记录,我需要删除一些选定的记录。例如我删除了记录3106,我需要删除3107,3108,3207,3458,3414。我只是不知道如何多次删除。删除MySQL中的范围
例子:
DELETE FROM `serial_codes` WHERE `serial_codes`.`SerialID` = 3106 LIMIT 1;
使用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 ...
你需要使用SQL in
DELETE FROM `serial_codes` WHERE `serial_codes`.`SerialID` in (3107,3108,3207,3458,3414)
最简单的方法(如果您事先知道该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
为什么你用大写字母(比如好的编码风格)来写所有的标记,而用小写字母来写“IN”呢?干净的代码兄弟! – DanFromGermany
@DanFromGermany大写标记从问题中复制而来。 – Jens
非常感谢,我只是试过这个,它很有魅力。同时也感谢大家对你的快速回应,你一直是一个真正的帮助。 – nathancording