Hay 2 tablas spawnlist
y npc
, y necesito eliminar datos de spawnlsit
.
npc_templateid = n.idTemplate
es lo único que "conecta" las tablas. He probado este script pero no funciona.
He probado esto:
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
fuente
fuente
Respuestas:
Agregue
.*
as
en su primera línea.Tratar:
fuente
spawnlist
. Veol2revo.root.spawnlist
ydb.root.spawnlist
.AS
sus alias.Si la base de datos es InnoDB, entonces podría ser una mejor idea usar claves externas y eliminar en cascada, esto haría lo que desea y también resultará en que no se almacenen datos redundantes.
Para este ejemplo, sin embargo, no creo que necesite los primeros:
Podría ser una mejor idea seleccionar las filas antes de eliminar para estar seguro de que está eliminando lo que desea:
También puede consultar la sintaxis de eliminación de MySQL aquí: http://dev.mysql.com/doc/refman/5.0/en/delete.html
fuente
si la base de datos es InnoDB, no es necesario realizar uniones en la eliminación. solamente
se puede usar para eliminar todos los registros que se vincularon con claves externas en otras tablas, para hacer eso, primero debe vincular sus tablas en tiempo de diseño.
si usa MyISAM, puede eliminar registros que se unen así
en la primera línea he inicializado las dos tablas temporales para borrar el registro, en la segunda línea he asignado la tabla de existencia tanto a a como a b, pero aquí he vinculado ambas tablas con la palabra clave join, y he hecho coincidir la clave principal y externa para ambas tablas que hacen el enlace, en la última línea he filtrado el registro por campo para borrar.
fuente
type
en realidad está en la otra tabla, no en laspawnlist
tabla, por lo que la unión es necesaria