このDual表というのはテーブルの参照を必要としないSQLを記述するのに よく用いられます。
例えば、ただ単に現在の日付を取得したい、という場合に
select current_timestamp from dual
のように記述できます。
ですが、MySQL では FROM 句はなくてもエラーにならないため、 上記のSQLと同じ結果を得たい場合は、
select current_timestamp
の用に FROM 句のない SQL を実行すれば、それで日付を取得できます。
では、DUAL 表って MySQL では使わないの?と思いますが、 「FROM 句なしに WHERE 句を指定したい」、という場合などでは 構文エラーとなってしまうため、DUAL を使用しなければなりません。
次のSQLはエラーになります。
select current_timestamp where now() like '2013-01-1%'
次の様にSQLを記述すればエラーにはなりません。
select current_timestamp from dual where now() like '2013-01-1%'
なので、DUAL 表って使わないかというとそうでもなかったりします。
それと、今 気が付いたのですが、
select * from dual
だと MySQL ではエラーになるんですね。
某DBMSでは 1 x 1 のデータを持つテーブルになっているので
1
が取得できます。
0 件のコメント:
コメントを投稿