- 締切済み
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句は別名を付ける際に使うと思うんですが... すみませんが説明していただけませんでしょうか? 宜しくお願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- root139
- ベストアンサー率60% (488/809)
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)
generate_seriesで出来る表データにSという別名をつけ、その列名をaとするという意味です。
補足
回答ありがとうございます。 SELECT文の個所を「s.a」のみでSQL文を実行して出力結果を見たら列名が「a」になっていました。 理解できましたが通常のAS句で別名を付ける場合と表データの別名+列名を付ける場合では何かメリットがあるのでしょうか。 ネットで調べてもヒットする事ができませんでした。 ※私の調べ方が悪いと思うんですが... このような技術などを調べ方も教えていただけませんでしょうか。 もう少し私にお付き合い下さい。 宜しくお願いします。