Domanda

per esempio ...

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

Ecco foo è presente ... in realtà che cosa fa? ..

È stato utile?

Soluzione

E 'solo un alias.

Alias ??di aiutare a ridurre la quantità di testo che si potrebbe essere necessario digitare quando la scrittura di query.

Per esempio questo:

SELECT customer.Name, customer.OpenDate FROM customer

Può essere ridotto a:

SELECT c.Name, c.OpenDate FROM customer c

Nel tuo esempio, si tratta di una tabella derivata (non fisica), che ora si può effettivamente dire:

Seleziona foo.someField piuttosto che SELECT *

Altri suggerimenti

In questo esempio, foo è un alias di tabella. Ecco come ci si utilizza:

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 (e MySQL per questo) si genera un errore se non si specifica un alias di tabella per una tabella derivata (AKA linea vista).

Si tratta di una tabella di alias / identificatore per il derivato di query

Senza di essa, si otterrà un errore perché la tabella derivata non ha identificatore

SELECT * FROM 
 ( SELECT RANK() OVER (ORDER BY stud_mark DESC) AS ranking, stud_id, stud_name, stud_mark FROM tbl_student )
WHERE ranking = 10

Sarebbe meglio chiedere: Che cosa fa l'expresison dopo "AS" media in SQL

Come Jon ha detto, è un alias. Si può usare al posto dell'espressione prima del AS.

SELECT veryverylongname AS V FROM dummy_table AS D WHERE D.V = 10

Qui potete vedere due alias V per il campo e D per la tabella.

È possibile anche usare per alias completi SELECT-dichiarazioni come nel tuo esempio. L'alias sarà quindi rappresentare la tabella risultante dalla subquery, ed avrà i campi specifiy nella subquery dopo la vostra SELECT-chiave.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top