Wenn ich die Vorlesungen des Datenbanksystems studiere, habe ich versucht, den Code in den Vorlesungsfolien zur Verfügung gestellt, aber hat nicht funktioniert. Das Beispiel besteht darin, einige Tupel aus einer Tabelle zu löschen.Löschen mehrerer Zeilen aus einer Tabelle (SQL)
Beispiel: Löschen von Bier (name, manf) alle Biere, für die es ein anderes Bier vom gleichen Hersteller gibt. Und der Code in der Folie vorgesehen ist wie folgt:
DELETE FROM Beers b
WHERE EXISTS(
SELECT name
FROM Beers
WHERE manf = b.manf AND name <> b.name);
ich die Beers Tabelle zu erstellen und zwei Zeilen einfügen wie folgt:
create table Beers(
name CHAR(30) primary key,
manf CHAR(30)
);
insert into Beers(name, manf)
values('Bud', 'A-B');
insert into Beers
values('Bud-lite', 'A-B');
und den Code testen. Laut der Vorlesung sollte es alle Tupel in Beers löschen, aber der Code funktioniert nicht und zeigt weiterhin "Sie können die Zieltabelle 'Beers' für die Aktualisierung in der FROM-Klausel nicht angeben, wenn ich die Löschoperation für SQL ausführe
kann mir jemand sagen, was mit dem Code falsch Dank
Add note:.?! Nur MySQL erfahren Sie können nicht den vorherigen Code ausführen kann aber dieses laufen:
Delete from Beers
where exists(
select a.name from(select b.name from Beers b
where manf = b.manf AND name!= b.name) as a);
aber Ich weiß immer noch nicht, warum wir Select zweimal innerhalb von Existieren verwenden müssen. Könnte jemand erklären, wie dieser Code funktioniert?
Mögliche Duplikat [Löschen - Ich kann nicht Ziel angeben Tabelle?] (https://stackoverflow.com/questions/5816840/delete-i-cant-specify-target-table) – Parfait