有两张表,spawnlist
和npc
,我需要从spawnlist
删除数据。 npc_templateid = n.idTemplate
是"连接"这两个表的唯一条件。
我尝试了这个脚本,但它没有起作用:
DELETE s FROM spawnlist s
INNER JOIN npc n ON s.npc_templateid = n.idTemplate
WHERE (n.type = "monster");
有两张表,spawnlist
和npc
,我需要从spawnlist
删除数据。 npc_templateid = n.idTemplate
是"连接"这两个表的唯一条件。
我尝试了这个脚本,但它没有起作用:
DELETE s FROM spawnlist s
INNER JOIN npc n ON s.npc_templateid = n.idTemplate
WHERE (n.type = "monster");
s
添加.*
。DELETE s.* FROM spawnlist s
INNER JOIN npc n ON s.npc_templateid = n.idTemplate
WHERE (n.type = "monster");
AS
。 - ThinkingStiffDELETE s
FROM spawnlist AS s
INNER JOIN npc AS n ON s.npc_templateid = n.idTemplate
WHERE n.type = "monster";
最好在删除之前先选择行,这样您就可以确保要删除的是您想要的内容:
SELECT * FROM spawnlist
INNER JOIN npc ON spawnlist.npc_templateid = npc.idTemplate
WHERE npc.type = "monster";
你还可以在这里查看MySQL的删除语法:http://dev.mysql.com/doc/refman/5.0/en/delete.html
type = "monster"
的记录。 - DanDELETE 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;
DELETE a,b
FROM `spawnlist` a
JOIN `npc` b
ON a.`npc_templateid` = b.`idTemplate`
WHERE a.`type` = 'monster';
在第一行,我初始化了两个临时表来删除记录, 在第二行,我将存在表分配给a和b,但在这里我使用join关键字将两个表链接在一起, 并且我匹配了两个表的主键和外键以建立联系, 在最后一行,我通过字段过滤记录以进行删除。