There are 2 tables, spawnlist
and npc
, and I need to delete data from spawnlsit
.
npc_templateid = n.idTemplate
is the only thing that "connect" the tables.
I have tried this script but it doesn't work.
I have tried this:
DELETE s FROM spawnlist s
INNER JOIN npc n ON s.npc_templateid = n.idTemplate
WHERE (n.type = "monster");
Add
.*
tos
in your first line.Try:
if the database is InnoDB you dont need to do joins in deletion. only
can be used to delete the all the records that linked with foreign keys in other tables, to do that you have to first linked your tables in design time.
if you uses MyISAM you can delete records joining like this
in first line i have initialized the two temp tables for delet the record, in second line i have assigned the existance table to both a and b but here i have linked both tables together with join keyword, and i have matched the primary and foreign key for both tables that make link, in last line i have filtered the record by field to delete.
If the database is InnoDB then it might be a better idea to use foreign keys and cascade on delete, this would do what you want and also result in no redundant data being stored.
For this example however I don't think you need the first s:
It might be a better idea to select the rows before deleting so you are sure your deleting what you wish to:
You can also check the MySQL delete syntax here: http://dev.mysql.com/doc/refman/5.0/en/delete.html