Existem 2 tabelas spawnlist
e npc
, e preciso excluir os dados de spawnlsit
.
npc_templateid = n.idTemplate
é a única coisa que "conecta" as mesas. Eu tentei este script, mas não funciona.
Eu tentei isso:
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
fonte
fonte
Respostas:
Adicione
.*
as
em sua primeira linha.Experimentar:
fonte
spawnlist
. Eu vejol2revo.root.spawnlist
edb.root.spawnlist
.AS
seus aliases.Se o banco de dados for InnoDB, então pode ser uma idéia melhor usar chaves estrangeiras e cascatear na exclusão, isso faria o que você deseja e também resultaria em nenhum dado redundante sendo armazenado.
Para este exemplo, entretanto, não acho que você precise dos primeiros s:
Pode ser uma ideia melhor selecionar as linhas antes de excluir, para ter certeza de que deseja excluir:
Você também pode verificar a sintaxe de exclusão do MySQL aqui: http://dev.mysql.com/doc/refman/5.0/en/delete.html
fonte
se o banco de dados for InnoDB, você não precisa fazer junções na exclusão. só
pode ser usado para excluir todos os registros vinculados a chaves estrangeiras em outras tabelas, para fazer isso você deve primeiro vincular suas tabelas em tempo de design.
se você usa MyISAM você pode deletar registros entrando assim
na primeira linha eu inicializei as duas tabelas temporárias para deletar o registro, na segunda linha eu atribuí a tabela de existência a ambos a e b, mas aqui eu vinculei as duas tabelas com a palavra-chave de junção e combinei a chave primária e estrangeira para ambas as tabelas que fazem link, na última linha filtrou o registro por campo para deletar.
fonte
type
está na outra tabela, não naspawnlist
tabela, portanto, a junção é necessária