• ベストアンサー

SELECT 文の NULL列は?

ある人に、こんなSQLを教えてもらいました。 ----------------------------- select id,tid,NULL as "res_no",account_id,name,date from t_game_bbs as a union select id,tid,res_no,account_id,name,date from t_game_res as b where del_flg != 1'; order by date DESC limit 10; -------------------------------- 不思議に思ったのが、”NULL as "res_no"”のところです。 これについて、ググッて見たのですが、明確な説明が見つかりませんでした。 これって、SQLの隠し機能なのですか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

「値 AS 名前」は、クライアントソフトに名前を返したり、表示したり、SQLで操作するために指定しています。 値にNULL定数を指定することも、値や演算に名前を付けることも、SQLの基本機能です。 この場合は、UNIONしている二つの表のうち、最初の表には列「RES_NO」に該当する値がないので、NULLを入れているのでしょう。 UNIONする表は、列数やデータ型が一致している必要がありますからね。

besei21
質問者

お礼

秘儀ではなかったのですね。 ありがとうございます。

その他の回答 (2)

  • concrete
  • ベストアンサー率29% (5/17)
回答No.2

まず、SQL文でselect句にくるカラム名は「as 任意の名前」で別名をつけることができます。 ここで「NULL as "res_no"」と書いてある部分は NULL(なにもない)を"res_no"という名前で取得する、という意味です。 また、このSQL文では、 2つのselect文の結果を「union」演算子で結合して、1つのまとまりにしています。 テーブルAからの検索結果 union(合わせる) テーブルBからの検索結果 unionで結合する場合、 テーブルA、Bそれぞれから取得する項目数を合わせる必要があるのですが、 多分テーブルAには"res_no"というカラムが存在しないか、 もしくは取得するには不適切な値が入っているため、 数を合わせるためだけにNULL(なにもない状態)を取得するようにしているのだと思います。 参考URLはSELECT文についてです。

参考URL:
http://cyberam.dip.jp/database/postgres/sql/select/select_main.html
besei21
質問者

お礼

”as "res_no"はわかるのですが、列名に”NULL”をダミーで指定できることをはじめて知りました。 本にも、Web上にも載っていないのです。 なので、私は、SQL職人の秘儀なのかと・・・。(・ω・;) ありがとうございました。m(_。_)m

回答No.1

nullの意味でしょうか? as "res_no"意味でしょうか? nullとは、 何のデータも含まれない状態、あるいは長さ0の空文字列のこと。 NULL as "res_no"は、 NULL値を"res_no"というカラムとして扱うということ。

besei21
質問者

お礼

NULLの方です。 列名に、NULLが指定できることを知りませんでしたので、質問さs手頂きました。 ”concreteさん”のお答えで、理解することが出来ました。 お答えいただき、ありがとうございます。M(_._)M