1

たとえば...

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に存在します...実際にはそれが何をするのですか?..

4

4 に答える 4

6

この例で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)はエラーをスローします。

于 2010-06-01T15:55:05.813 に答える
4

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

エイリアスは、クエリを作成するときに入力しなければならないテキストの量を減らすのに役立ちます。

たとえば、これ:

SELECT customer.Name, customer.OpenDate FROM customer

次のように短縮できます。

SELECT c.Name, c.OpenDate FROM customer c

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

SELECT*ではなくSELECTfoo.someField

于 2010-06-01T15:52:59.110 に答える
3

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

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

SELECT * FROM 
 ( SELECT RANK() OVER (ORDER BY stud_mark DESC) AS ranking, stud_id, stud_name, stud_mark FROM tbl_student )
WHERE ranking = 10
于 2010-06-01T15:52:36.320 に答える
3

「」の後の表現ASはSQLで何を意味するのでしょうか?

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

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

ここでは、フィールドの2つのエイリアスVとテーブルのDを確認できます。

例のように、これを使用して完全なステートメントのエイリアスを作成することもできSELECTます。SELECTエイリアスは、サブクエリの結果のテーブルを表し、 -keywordの後にサブクエリで指定されたフィールドを持ちます。

于 2010-06-01T15:56:11.333 に答える