Есть 2 таблицы, spawnlist
и npc
мне нужно удалить данные из spawnlsit
.
npc_templateid = n.idTemplate
это единственное, что «связывает» таблицы. Я пробовал этот сценарий, но он не работает.
Я пробовал это:
DELETE s FROM spawnlist s
INNER JOIN npc n ON s.npc_templateid = n.idTemplate
WHERE (n.type = "monster");
mysql
sql
sql-server
inner-join
sql-delete
JoinOG
источник
источник
Ответы:
Добавить
.*
вs
вашей первой линии.Пытаться:
источник
spawnlist
. Я вижуl2revo.root.spawnlist
иdb.root.spawnlist
.AS
для своих псевдонимов.Если база данных - это InnoDB, тогда, возможно, было бы лучше использовать внешние ключи и каскад при удалении, это будет делать то, что вы хотите, а также не приведет к сохранению избыточных данных.
Однако для этого примера я не думаю, что вам нужны первые s:
Возможно, лучше выбрать строки перед удалением, чтобы вы были уверены, что удаляете то, что хотите:
Вы также можете проверить синтаксис удаления MySQL здесь: http://dev.mysql.com/doc/refman/5.0/en/delete.html
источник
если база данных - InnoDB, вам не нужно выполнять соединения при удалении. только
может использоваться для удаления всех записей, связанных с внешними ключами в других таблицах, для этого вам необходимо сначала связать свои таблицы во время разработки.
если вы используете MyISAM, вы можете удалять записи, присоединяющиеся таким образом
в первой строке я инициализировал две временные таблицы для удаления записи, во второй строке я назначил таблицу существования как для a, так и для b, но здесь я связал обе таблицы вместе с ключевым словом join, и я сопоставил первичный и внешний ключ для обеих таблиц, которые делают ссылку, в последней строке я отфильтровал запись по полю для удаления.
источник
type
фактически находится в другой таблице, а не вspawnlist
таблице, поэтому необходимо присоединиться