Ich führe diese Abfrage unter MySQL aus
SELECT ID FROM (
SELECT ID, msisdn
FROM (
SELECT * FROM TT2
)
);
und es gibt diesen Fehler:
Jede abgeleitete Tabelle muss einen eigenen Alias haben.
Was verursacht diesen Fehler?
mysql
subquery
mysql-dependent-subquery
mysql-error-1248
Silberkind
quelle
quelle
)
in einer Abfrage mit vielenUNION ALL
s ein Extra hatte .Antworten:
Jede abgeleitete Tabelle (AKA-Unterabfrage) muss tatsächlich einen Alias haben. Dh jede Abfrage in Klammern muss mit einem Alias (
AS whatever
) versehen werden, auf den im Rest der äußeren Abfrage verwiesen werden kann.In Ihrem Fall könnte natürlich die gesamte Abfrage ersetzt werden durch:
quelle
AS
Anweisungen hinzugefügt haben . Ich dachte, Sie haben nur die Kurzschrift gezeigt. entfernte meine Gegenstimme.SELECT...FROM...WHERE x NOT IN (subquery) AS T
werden einen Fehler auslösenIch denke, es fordert Sie auf, dies zu tun:
Aber warum sollten Sie diese Abfrage überhaupt schreiben?
quelle
Hier ist ein anderes Beispiel, das ohne Aliase nicht umgeschrieben werden kann (kann nicht
GROUP BY DISTINCT
).Stellen Sie sich eine Tabelle mit dem Namen vor
purchases
, in der Einkäufe voncustomers
at aufgezeichnet werdenstores
, dh es handelt sich um eine Tabelle mit vielen zu vielen, und die Software muss wissen, welche Kunden in mehr als einem Geschäft Einkäufe getätigt haben:..wird mit dem Fehler brechen
Every derived table must have its own alias
. Reparieren:(Beachten Sie den
AS custom
Alias).quelle