если база данных - InnoDB, вам не нужно выполнять соединения при удалении. только
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, и я сопоставил первичный и внешний ключ для обеих таблиц, которые делают ссылку, в последней строке я отфильтровал запись по полю для удаления.