2

次のような SQL ステートメントを見つけました。

SELECT * FROM Users x

私の質問は次のとおりxです。これは今まで見たことがありません。

ありがとう。

4

3 に答える 3

5

xテーブルのエイリアスですUsers

テーブル エイリアスの使用

テーブルにエイリアス (相関名または範囲変数とも呼ばれます) を指定すると、SELECT ステートメントの読みやすさを向上させることができます。AS キーワードの有無にかかわらず、テーブル エイリアスを割り当てることができます。

SELECT * FROM Users x

SELECT * FROM Users AS x
于 2012-10-09T19:58:33.847 に答える
4

別名です。キーワードは省略可能で省略されていますASが、次と同じです。

SELECT * FROM Users AS x

これは、ここで指定されたテーブルを参照するために残りのクエリで使用できることを意味します(SQL の一部の実装では、SQL Server がその 1 つです)。例えば:xUsers

SELECT x.MyColumn
FROM Users x
WHERE x.AnotherColumn = 42

エイリアスには、次の 3 つの一般的な使用例があります。

  1. 読みやすさ。長いテーブル名の場合、または名前が何度も​​使用される場合、読みやすさが向上します。たとえば、エイリアスなしで次を想像してください。

    SELECT x.SomeColumn, x.SomeOtherColumn, x.AThirdColumn
    FROM [my crAzy Table Name with spaces in it] x
    WHERE x.AnotherColumn = 42
    
  2. 明確化。多くの場合、自己結合に使用されます。同じテーブルを 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
    
  3. FROM または JOIN 句 (派生テーブルとも呼ばれる) のサブクエリには名前が必要です。これは、エイリアスを指定することによって行われます。

    SELECT x.SomeColumn
    FROM
    (
        SELECT SomeColumn
        FROM Users
    ) x
    
于 2012-10-09T19:58:49.697 に答える
1

これはユーザーの単なるエイリアスであり、クエリで使用できます。

想像 :

両方に 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 番目のバージョンを使用すると、クエリが高速で読みにくくなる可能性があります。

于 2012-10-09T19:58:45.593 に答える