หากฐานข้อมูลเป็น 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 และฉันได้จับคู่คีย์หลักและคีย์ต่างประเทศแล้ว สำหรับทั้งสองตารางที่สร้างลิงก์ในบรรทัดสุดท้ายฉันได้กรองเรกคอร์ดตามฟิลด์ที่จะลบ