【发布时间】:2017-01-12 23:29:13
【问题描述】:
我有一个包含游戏生物的数据库。
2 个表:
“creature_template”包含与生物相关的所有数据
“生物”包含有关游戏中生物位置的信息。
代码如下:
DELETE FROM
creature
WHERE
id not in
(SELECT DISTINCT
b.id
FROM
creature_template a inner join creature b on a.entry = b.id
WHERE
b.map != 571
AND a.`type` = 1
AND a.`type` = 10
);
类型是生物的类型(1 = 野兽,10 = 未指定)
我要做的是删除地图#571上所有不是野兽(type=1)或未指定(type=10)的生物。
“map”列在“creature”表中,而“type”列在“creature_template”表中。
游戏中的每个生物都在数据库中通过 ID 进行标识。 “creature”表有一个名为“id”的列,其中包含这些 ID,而“creature_template”表中的等效项是一个名为“entry”的列。
所以我必须做的是选择地图#571上的所有生物,然后排除所有类型1和10并删除其余的。
问题是当我执行上面的代码时,我收到错误消息“您不能在 FROM 子句中指定目标表 'creature' 进行更新”
我在这里对 stackoverflow 进行了一些研究,并尝试了一些我找到的解决方案。
...我最终从“生物”表中删除了所有数据。幸运的是,我从昨天做的备份中取回了数据。
知道如何解决我的问题吗?
【问题讨论】:
-
如果您愿意,请考虑遵循以下简单的两步操作: 1. 如果您还没有这样做,请提供适当的 CREATE 和 INSERT 语句(和/或 sqlfiddle),以便我们可以更容易复制问题。 2. 如果您尚未这样做,请提供与步骤 1 中提供的信息相对应的所需结果集。
标签: mysql