• 締切済み

SQL文のAS句の意味を教えて下さい。

generate_seriesをネットで調べていたら下記のページを見つけ、このページのSQL文を解読していたら一か所、わからないところがあったので質問しました。 下記のSQL文はサイトからコピーしたものです。 SELECT  current_date + s.a AS date FROM  generate_series(   (SELECT 0 - extract(dow FROM current_date))::int,   (SELECT 6 - extract(dow FROM current_date))::int  ) AS s(a); 下記が上記のSQL文を実行した結果です。   date ---------- 2012-02-26 2012-02-27 2012-02-28 2012-02-29 2012-03-01 2012-03-02 2012-03-03 上記のSQL文のAS句を下記のように私が変更してSQL文を実行したら上記の結果と同じ結果を出力しました。 SELECT  current_date + s AS date FROM  generate_series(   (SELECT 0 - extract(dow FROM current_date))::int,   (SELECT 6 - extract(dow FROM current_date))::int  ) AS s; 下記が上記のSQL文を実行した結果です。   date ---------- 2012-02-26 2012-02-27 2012-02-28 2012-02-29 2012-03-01 2012-03-02 2012-03-03 上記のSQLのAS句の「s(a)」はどういう意味ですか? ※AS句は別名を付ける際に使うと思うんですが... すみませんが説明していただけませんでしょうか? 宜しくお願いします。

みんなの回答

  • root139
  • ベストアンサー率60% (488/809)
回答No.2

ASで列名を付けるのは、SELECT句などで個別の列を指定できるようにするためです。 generate_series では1列しか生成されませんので、あまりメリットは感じませんが、複数の列を持っていて列名の無い仮想テーブルでは重宝します。 例えば、VALUESで仮想テーブルを作った場合、列名を付けておけばSELECT句やWHERE句等で個別の列を簡単に指定することが出来ます。 例) -------------------------------- SELECT a.x, a.y FROM (VALUES('hoge', 100), ('foo', 200), ('bar', 300)) AS a(x, y); ------------------------------------

  • nora1962
  • ベストアンサー率60% (431/717)
回答No.1

generate_seriesで出来る表データにSという別名をつけ、その列名をaとするという意味です。

j-unico
質問者

補足

回答ありがとうございます。 SELECT文の個所を「s.a」のみでSQL文を実行して出力結果を見たら列名が「a」になっていました。 理解できましたが通常のAS句で別名を付ける場合と表データの別名+列名を付ける場合では何かメリットがあるのでしょうか。 ネットで調べてもヒットする事ができませんでした。 ※私の調べ方が悪いと思うんですが... このような技術などを調べ方も教えていただけませんでしょうか。 もう少し私にお付き合い下さい。 宜しくお願いします。