якщо база даних 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';
у першому рядку я ініціалізував дві таблиці temp для видалення запису, у другому рядку я призначив таблицю існування і a, і b, але тут я зв'язав обидві таблиці разом із ключовим словом приєднання, і я зіставлю первинний та зовнішній ключ для обох таблиць, які створюють посилання, я в останньому рядку відфільтрував запис за полем для видалення.