si la base de datos es InnoDB, no es necesario realizar uniones en la eliminación. solamente
DELETE FROM spawnlist WHERE spawnlist.type = "monster";
se puede usar para eliminar todos los registros que se vincularon con claves externas en otras tablas, para hacer eso, primero debe vincular sus tablas en tiempo de diseño.
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 usa MyISAM, puede eliminar registros que se unen así
DELETE a,b
FROM `spawnlist` a
JOIN `npc` b
ON a.`npc_templateid` = b.`idTemplate`
WHERE a.`type` = 'monster';
en la primera línea he inicializado las dos tablas temporales para borrar el registro, en la segunda línea he asignado la tabla de existencia tanto a a como a b, pero aquí he vinculado ambas tablas con la palabra clave join, y he hecho coincidir la clave principal y externa para ambas tablas que hacen el enlace, en la última línea he filtrado el registro por campo para borrar.