質問

例えば...

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

ここ foo 存在しています...実際にそれが何をするのですか?..

役に立ちましたか?

解決

それは単なるエイリアスです。

エイリアスは、クエリを書くときに入力する必要があるテキストの量を減らすのに役立ちます。

たとえば、これ:

SELECT customer.Name, customer.OpenDate FROM customer

短縮することができます:

SELECT c.Name, c.OpenDate FROM customer c

あなたの例では、それは派生テーブル(物理的なテーブルではありません)であり、実際に言うことができます。

foo.somefieldを選択するのではなく、 *

他のヒント

この例では、 foo テーブルエイリアスです。これがあなたがそれを使用する方法です:

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(およびMySQLの場合)は、派生テーブルのテーブルエイリアス(別名インラインビュー)を指定しない場合、エラーをスローします。

派生クエリのテーブルエイリアス/識別子です

それがなければ、派生テーブルに識別子がないため、エラーが発生します

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

尋ねる方が良いでしょう:後の見出しは何ですか」AS「SQLの意味は?

ジョンが言ったように、それは別名です。 ASの前に式の代わりに使用できます。

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

ここでは、フィールドには2つのエイリアスVとテーブルのDが表示されます。

また、エイリアスコンプリートに使用することもできます SELECT- あなたの例のように調整。エイリアスは、サブクエリから生じるテーブルを表し、その後、サブクエリにフィールドを指定します SELECT-キーワード。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top