「ブロック機能」のリニューアルについて

ある人に、こんな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の隠し機能なのですか?

教えて!goo グレード

A 回答 (3件)

「値 AS 名前」は、クライアントソフトに名前を返したり、表示したり、SQLで操作するために指定しています。


値にNULL定数を指定することも、値や演算に名前を付けることも、SQLの基本機能です。

この場合は、UNIONしている二つの表のうち、最初の表には列「RES_NO」に該当する値がないので、NULLを入れているのでしょう。
UNIONする表は、列数やデータ型が一致している必要がありますからね。
    • good
    • 3
この回答へのお礼

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

お礼日時:2006/11/22 16:28

まず、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/sele …
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/11/21 16:03

nullの意味でしょうか?


as "res_no"意味でしょうか?

nullとは、
何のデータも含まれない状態、あるいは長さ0の空文字列のこと。

NULL as "res_no"は、
NULL値を"res_no"というカラムとして扱うということ。
    • good
    • 1
この回答へのお礼

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

お礼日時:2006/11/21 16:07

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

教えて!goo グレード

関連するカテゴリからQ&Aを探す


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング