このSQL Serverクエリでは、「Foo」とはどういう意味ですか?
-
22-10-2019 - |
質問
例えば...
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
-キーワード。
所属していません StackOverflow