Was bedeutet "foo" bedeutet in diesem SQL Server-Abfrage?
-
22-10-2019 - |
Frage
für zB...
SELECT *
FROM ( SELECT RANK() OVER (ORDER BY stud_mark DESC) AS ranking,
stud_id,
stud_name,
stud_mark
FROM tbl_student ) AS foo
WHERE ranking = 10
Hier foo
vorhanden ist...eigentlich ist, was es tut ?..
Lösung
Es ist nur ein Alias.
Aliase helfen Ihnen bei der Reduzierung der Textmenge, die Sie möglicherweise beim Schreiben von Fragen eingeben müssen.
Zum Beispiel dies:
SELECT customer.Name, customer.OpenDate FROM customer
Kann verkürzt werden auf:
SELECT c.Name, c.OpenDate FROM customer c
In Ihrem Beispiel handelt es sich um eine abgeleitete Tabelle (keine physische), die Sie jetzt tatsächlich sagen können:
Wählen Sie foo.somefield eher und wählen Sie dann * *
Andere Tipps
In diesem Beispiel, foo
ist ein Tischalias. So würden Sie es verwenden:
SELECT foo.*
FROM ( SELECT RANK() OVER (ORDER BY ts.stud_mark DESC) AS ranking,
ts.stud_id,
ts.stud_name,
ts.stud_mark
FROM tbl_student ts) AS foo
WHERE foo.ranking = 10
SQL Server (und MySQL in dieser Angelegenheit) wirft einen Fehler auf, wenn Sie keinen Tabellenalias für eine abgeleitete Tabelle (auch bekannt als Inline -Ansicht) angeben.
Es ist ein Tabellenalias/eine Kennung für die abgeleitete Abfrage
Ohne sie erhalten Sie einen Fehler, weil die abgeleitete Tabelle keine Kennung hat
SELECT * FROM
( SELECT RANK() OVER (ORDER BY stud_mark DESC) AS ranking, stud_id, stud_name, stud_mark FROM tbl_student )
WHERE ranking = 10
Es wäre besser zu Fragen:Was bedeutet der expresison nach "AS
"mean in SQL?
Als Jon sagte, es ist eines Pseudonyms gestattet.Sie können es verwenden, anstatt der Ausdruck vor dem ALS.
SELECT veryverylongname AS V FROM dummy_table AS D WHERE D.V = 10
Hier können Sie zwei Aliase V für das Feld und D für die Tabelle.
Sie können es auch verwenden, um alias-complete SELECT
-Anweisungen, wie in Ihrem Beispiel.Der alias wird dann repräsentieren die Tabelle, die aus der sub-query, und die Felder angeben, die in der Unterabfrage nach Ihrem SELECT
-keyword.