Si la base de données est InnoDB, vous n'avez pas besoin de faire des jointures dans la suppression. seulement
DELETE FROM spawnlist WHERE spawnlist.type = "monster";
peut être utilisé pour supprimer tous les enregistrements liés à des clés étrangères dans d'autres tables. Pour ce faire, vous devez d'abord lier vos tables lors de la conception.
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;
Si vous utilisez MyISAM, vous pouvez supprimer les enregistrements en les joignant comme ceci
DELETE a,b
FROM `spawnlist` a
JOIN `npc` b
ON a.`npc_templateid` = b.`idTemplate`
WHERE a.`type` = 'monster';
Dans la première ligne, j'ai initialisé les deux tables temporaires pour supprimer l'enregistrement, dans la deuxième ligne j'ai assigné la table d'existence à la fois à a et à b mais ici j'ai lié les deux tables ensemble avec le mot-clé join, et j'ai fait correspondre la clé primaire et étrangère pour les deux tables qui font le lien, dans la dernière ligne, j'ai filtré l'enregistrement par champ à supprimer.