2010-06-01 5 views
1

pour par exemple ...Que signifie "foo" dans cette requête SQL Server?

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? ..

+1

@Raj Kaimal: 'AS' est utilisé pour l'aliasing - table et colonne. La question était de savoir ce que foo représente. –

Répondre

3

Il est juste un alias. Les alias vous aident à 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 réduit à:

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 *

+2

Non seulement les alias aident à réduire la frappe, mais ils sont également essentiels pour différencier deux références à la même table dans un requête –

3

Il est un alias de table/identifiant pour la requête dérivée

Sans elle, vous « ll obtenir 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 
+0

Vous obtiendrez uniquement l'erreur car vous avez une clause where sur la requête. Sinon, vous n'avez pas besoin du "foo" – Jim

+2

@Jim: je ne me souviens pas: je toujours alias – gbn

6

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) jetteront une erreur si vous ne spécifiez pas un alias de table pour une table (AKA vue en ligne) dérivée.

3

Il serait préférable de demander: Qu'est-ce que l'expression après "AS" signifie en SQL? Comme l'a dit Jon, c'est un alias. Vous pouvez l'utiliser à la place 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 le tableau.

Vous pouvez également l'utiliser pour compléter les SELECT -statements comme dans votre exemple. L'alias représentera alors la table résultant de la sous-requête, et aura les champs spécifiés dans la sous-requête après votre mot-clé SELECT.

+1

AS n'est pas nécessaire pour définir un alias, mais il est plus explicite. –