Veritabanı InnoDB ise, silme işleminde birleştirme yapmanız gerekmez. sadece
DELETE FROM spawnlist WHERE spawnlist.type = "monster";
diğer tablolardaki yabancı anahtarlarla bağlantılı tüm kayıtları silmek için kullanılabilir, bunu yapmak için önce tablolarınızı tasarım zamanında bağlamanız gerekir.
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 kullanıyorsanız, bu şekilde katılan kayıtları silebilirsiniz.
DELETE a,b
FROM `spawnlist` a
JOIN `npc` b
ON a.`npc_templateid` = b.`idTemplate`
WHERE a.`type` = 'monster';
ilk satırda kaydı silmek için iki geçici tabloyu başlattım, ikinci satırda mevcut tabloyu hem a hem de b'ye atadım ancak burada her iki tabloyu join anahtar kelimesi ile bağladım ve birincil ve yabancı anahtarı eşleştirdim bağlantı yapan her iki tablo için, son satırda silmek için kaydı alana göre filtreledim.