У меня есть база данных, содержащая существ из игры.Вы не можете указать целевую таблицу «существо» для обновления в предложении FROM
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 и не являются животными (тип = 1) или не указаны (тип = 10).
Столбец «карта» находится в таблице «существо», а столбец «type» находится в таблице «creature_template».
Каждое существо в игре идентифицируется в базе данных идентификатором. В таблице «существо» есть столбец с именем «id», который содержит эти идентификаторы, а эквивалент в таблице «creature_template» - столбец «запись».
Так что я должен сделать, это выбрать все существа, которые находятся на карте # 571, а затем исключить все типы 1 и 10 и удалить остальные.
Проблема заключается в том, что, когда я выполняю код выше, я получаю ошибку говоря «Вы не можете указать целевую таблицу„существа“для обновления в ЕКЕ»
Я сделал несколько исследований здесь, на StackOverflow и попробовал несколько решений, которые я нашел.
... В итоге я удалил все данные из таблицы «существо». К счастью, я получил данные из резервной копии, которую я сделал вчера.
Любая идея, как решить мою проблему?
Если вам нравится, рассмотрите следующий простой двухэтапный курс действий: 1. Если вы еще этого не сделали, предоставьте правильные инструкции CREATE и INSERT (и/или sqlfiddle), чтобы мы могли легче реплицировать проблему , 2. Если вы еще этого не сделали, укажите желаемый набор результатов, соответствующий информации, представленной на шаге 1. – Strawberry