次のような SQL ステートメントを見つけました。
SELECT * FROM Users x
私の質問は次のとおりx
です。これは今まで見たことがありません。
ありがとう。
次のような SQL ステートメントを見つけました。
SELECT * FROM Users x
私の質問は次のとおりx
です。これは今まで見たことがありません。
ありがとう。
x
テーブルのエイリアスですUsers
。
テーブルにエイリアス (相関名または範囲変数とも呼ばれます) を指定すると、SELECT ステートメントの読みやすさを向上させることができます。AS キーワードの有無にかかわらず、テーブル エイリアスを割り当てることができます。
SELECT * FROM Users x
SELECT * FROM Users AS x
別名です。キーワードは省略可能で省略されていますAS
が、次と同じです。
SELECT * FROM Users AS x
これは、ここで指定されたテーブルを参照するために残りのクエリで使用できることを意味します(SQL の一部の実装では、SQL Server がその 1 つです)。例えば:x
Users
SELECT x.MyColumn
FROM Users x
WHERE x.AnotherColumn = 42
エイリアスには、次の 3 つの一般的な使用例があります。
読みやすさ。長いテーブル名の場合、または名前が何度も使用される場合、読みやすさが向上します。たとえば、エイリアスなしで次を想像してください。
SELECT x.SomeColumn, x.SomeOtherColumn, x.AThirdColumn
FROM [my crAzy Table Name with spaces in it] x
WHERE x.AnotherColumn = 42
明確化。多くの場合、自己結合に使用されます。同じテーブルを 2 回使用することに注意してください。Users
テーブルの 2 つのインスタンスを区別するには、エイリアスを使用する必要があります。
SELECT x.SomeColumn, COUNT(y.SomeColumn)
FROM Users x
INNER JOIN Users y ON x.SomeOtherColumn < y.SomeOtherColumn
GROUP BY x.SomeColumn
FROM または JOIN 句 (派生テーブルとも呼ばれる) のサブクエリには名前が必要です。これは、エイリアスを指定することによって行われます。
SELECT x.SomeColumn
FROM
(
SELECT SomeColumn
FROM Users
) x
これはユーザーの単なるエイリアスであり、クエリで使用できます。
想像 :
両方に Id 列がある 2 つのテーブルからデータを取得したい
これらの ID を取得する場合は、混乱を避けるために列名の前に付ける必要があります。
エイリアスあり:
select t1.Id, t2.Id
from mytableWithAReallyComplicatedName t1
inner join mySecondtableWithAReallyComplicatedName t2 on t1.Id = t2.Id
エイリアスなし
select mytableWithAReallyComplicatedName.Id, mySecondtableWithAReallyComplicatedName.Id
from mytableWithAReallyComplicatedName
inner join mySecondtableWithAReallyComplicatedName on mytableWithAReallyComplicatedName.Id = mySecondtableWithAReallyComplicatedName .Id
テーブル名が長い場合、2 番目のバージョンを使用すると、クエリが高速で読みにくくなる可能性があります。