締切済み

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

  • すぐに回答を!
  • 質問No.7336992
  • 閲覧数7719
  • ありがとう数3
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 38% (26/67)

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件)

  • 回答No.2

ベストアンサー率 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);
------------------------------------
感謝経済、優待交換9月20日スタート
  • 回答No.1

ベストアンサー率 60% (431/717)

generate_seriesで出来る表データにSという別名をつけ、その列名をaとするという意味です。
補足コメント
j-unico

お礼率 38% (26/67)

回答ありがとうございます。

SELECT文の個所を「s.a」のみでSQL文を実行して出力結果を見たら列名が「a」になっていました。

理解できましたが通常のAS句で別名を付ける場合と表データの別名+列名を付ける場合では何かメリットがあるのでしょうか。

ネットで調べてもヒットする事ができませんでした。
※私の調べ方が悪いと思うんですが...

このような技術などを調べ方も教えていただけませんでしょうか。

もう少し私にお付き合い下さい。
宜しくお願いします。
投稿日時 - 2012-03-02 11:21:04
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
このQ&Aにこう思った!同じようなことあった!感想や体験を書こう
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する

特集


より良い社会へ。感謝経済プロジェクト始動

ピックアップ

ページ先頭へ