Que signifie « foo » signifie dans ce requêtes SQL Server?
-
22-10-2019 - |
Question
pour par exemple ...
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
Ici foo
est présent ... en fait ce qu'il fait? ..
La solution
Il est juste un alias.
Alias ??vous aider à réduire la quantité de texte que vous pouvez avoir à taper lors de l'écriture des requêtes.
Par exemple ceci:
SELECT customer.Name, customer.OpenDate FROM customer
Peut être raccourci à:
SELECT c.Name, c.OpenDate FROM customer c
Dans votre exemple, il est une table dérivée (pas un moment physique) qui maintenant vous pouvez dire en fait:
SELECT foo.someField plutôt que SELECT *
Autres conseils
Dans cet exemple, foo
est un alias de table. Voici comment utiliser cette fonctionnalité?
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 (et MySQL pour cette question) va lancer une erreur si vous ne spécifiez pas un alias de table pour une table (AKA vue en ligne) dérivée.
Il est un alias de table / identificateur de la requête dérivée
Sans elle, vous obtiendrez une erreur, car la table dérivée n'a pas identifiant
SELECT * FROM
( SELECT RANK() OVER (ORDER BY stud_mark DESC) AS ranking, stud_id, stud_name, stud_mark FROM tbl_student )
WHERE ranking = 10
Il serait préférable de demander: Qu'est-ce que la expresison moyenne dans SQL après « AS
»
Comme Jon dit, il est un alias. Vous pouvez l'utiliser au lieu de l'expression avant l'AS.
SELECT veryverylongname AS V FROM dummy_table AS D WHERE D.V = 10
Ici vous pouvez voir deux alias V pour le champ et D pour la table.
Vous pouvez également l'utiliser pour alias relevés SELECT
-complets comme dans votre exemple. L'alias représentera alors la table résultant de la sous-requête, et aura les champs dans la sous-requête Précisez après votre SELECT
-mot.