Es gibt 2 Tabellen spawnlist
und npc
, und ich muss Daten aus löschen spawnlsit
.
npc_templateid = n.idTemplate
ist das einzige, was die Tabellen "verbindet". Ich habe dieses Skript ausprobiert, aber es funktioniert nicht.
Ich habe das versucht:
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
quelle
quelle
Antworten:
In
.*
zus
Ihrer ersten Zeile.Versuchen:
quelle
spawnlist
. Ich sehel2revo.root.spawnlist
unddb.root.spawnlist
.AS
für Ihre Aliase hinzuzufügen .Wenn es sich bei der Datenbank um InnoDB handelt, ist es möglicherweise besser, Fremdschlüssel und Kaskaden beim Löschen zu verwenden. Dies würde das tun, was Sie möchten, und auch dazu führen, dass keine redundanten Daten gespeichert werden.
Für dieses Beispiel brauche ich jedoch nicht die ersten s:
Es ist möglicherweise besser, die Zeilen vor dem Löschen auszuwählen, damit Sie sicher sind, dass Sie das löschen, was Sie möchten:
Sie können die MySQL-Löschsyntax auch hier überprüfen: http://dev.mysql.com/doc/refman/5.0/en/delete.html
quelle
Wenn die Datenbank InnoDB ist, müssen Sie beim Löschen keine Verknüpfungen durchführen. nur
kann verwendet werden, um alle Datensätze zu löschen, die mit Fremdschlüsseln in anderen Tabellen verknüpft sind. Dazu müssen Sie Ihre Tabellen zuerst in der Entwurfszeit verknüpfen.
Wenn Sie MyISAM verwenden, können Sie Datensätze löschen, die sich wie folgt verbinden
In der ersten Zeile habe ich die beiden temporären Tabellen zum Löschen des Datensatzes initialisiert. In der zweiten Zeile habe ich die Existenztabelle sowohl a als auch b zugewiesen, aber hier habe ich beide Tabellen mit dem Join-Schlüsselwort verknüpft und den Primär- und den Fremdschlüssel abgeglichen Für beide Tabellen, die eine Verknüpfung herstellen, habe ich in der letzten Zeile den Datensatz nach dem zu löschenden Feld gefiltert.
quelle
type
befindet sich tatsächlich in der anderen Tabelle, nicht in derspawnlist
Tabelle, daher ist ein Beitritt erforderlich