DELETE FROM spawnlist WHERE spawnlist.type = "monster";
可以用来删除与其他表中的外键链接的所有记录,要做到这一点,必须在设计时首先链接表。
CREATE TABLE IF NOT EXIST spawnlist (
npc_templateid VARCHAR(20) NOT NULL PRIMARY KEY
)ENGINE=InnoDB;
CREATE TABLE IF NOT EXIST npc (
idTemplate VARCHAR(20) NOT NULL,
FOREIGN KEY (idTemplate) REFERENCES spawnlist(npc_templateid) ON DELETE CASCADE
)ENGINE=InnoDB;
如果你使用 MyISAM 你可以删除这样加入的记录
DELETE a,b
FROM `spawnlist` a
JOIN `npc` b
ON a.`npc_templateid` = b.`idTemplate`
WHERE a.`type` = 'monster';
在第一行中,我初始化了两个临时表,用于删除记录,
在第二行,我给 a 和 b 赋予了存在表,但在这里,我用 join 关键字将两个表连接起来,
我已经匹配了两个表的主键和外键,
在最后一行,我按字段过滤了要删除的记录。