¿Qué significa "Foo" en esta consulta de SQL Server?
-
22-10-2019 - |
Pregunta
por ejemplo ...
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
Aquí foo
¿Está presente ... en realidad lo que hace?
Solución
Es solo un alias.
Los alias lo ayudan a reducir la cantidad de texto que puede tener que escribir al escribir consultas.
Por ejemplo esto:
SELECT customer.Name, customer.OpenDate FROM customer
Se puede acortar a:
SELECT c.Name, c.OpenDate FROM customer c
En su ejemplo, es una tabla derivada (no física) que ahora puede decir:
Seleccione foo.somefield en lugar de seleccionar *
Otros consejos
En este ejemplo, foo
es un alias de tabla. Así es como lo usarías:
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 (y MySQL para el caso) arrojará un error si no especifica un alias de tabla para una tabla derivada (también conocida como vista en línea).
Es un alias/identificador de tabla para la consulta derivada
Sin él, recibirá un error porque la tabla derivada no tiene identificador
SELECT * FROM
( SELECT RANK() OVER (ORDER BY stud_mark DESC) AS ranking, stud_id, stud_name, stud_mark FROM tbl_student )
WHERE ranking = 10
Sería mejor preguntar: ¿Qué hace el Expresison "después?"AS
"¿En general en SQL?
Como dijo Jon, es un alias. Puede usarlo en lugar de la expresión antes del AS.
SELECT veryverylongname AS V FROM dummy_table AS D WHERE D.V = 10
Aquí puede ver dos alias V para el campo y D para la mesa.
También puedes usarlo para alias completas SELECT
-miros como en su ejemplo. El alias representará la tabla resultante de la subcontrol y tendrá los campos específicos en la subconsulta después de su SELECT
-palabra clave.