[前][次][番号順一覧][スレッド一覧]

mysql:2224

From: (moeru) <<moeru@xxxxxxxxxx>>
Date: Tue, 20 Jun 2000 18:51:37 +0900
Subject: [mysql 02224] Re: SELECT 句で演算をした別名は WHERE 句では使えない?

モエルです。

楊さん、tamonさん、コメントありがとうございます(^^)

いろいろ試してみました。

tamonさんからいただいた
>as無いだけちゃいます?

ですけど、as無しでも機能してるようです。


SELECT itemid,title,date,ends - UNIX_TIMESTAMP() timeleft 
FROM item
WHERE ends - UNIX_TIMESTAMP() < 86400");

上記のSQLは、動いています。
で、SELECT句のところで(ends - UNIX_TIMESTAMP()) as timeleftってやれば
WHERE句では、演算してるエイリアスで
WHERE timeleft < 86400 とか書けると思っていたのですが
それは間違いでした(^^;

SELECT文の構文に優先順位ってのがあるようです。
たぶん、これが理由じゃないかと。

1、FROM句
2、WHERE句
3、GROUP BY句
4、HAVING句
5、SELECT句

SELECT句が一番最後に処理されるため
SELECTのエイリアス指定は、それより先に処理されるWHERE句に反映しない。

であってるでしょうか?

これはSQL92規格とMySQLのは同じなのでしょうか?
でも、いろいろ実験した限りではこのとおりに動いているようです。

この順番で処理されるなら
WHERE句のところでエイリアス指定できるようになれば
もっと簡潔に書けるのにと思うのです(^^;


今後もどうぞ宜しくですm(__)m

モエル


[前][次][番号順一覧][スレッド一覧]

      2219 2000-06-19 23:37 [<moeru@xxxxxxxxxx>  ] SELECT 句で演算をした別名は WHERE 句では使えない?
      2220 2000-06-20 01:24 ┣["Ningfeng Yang" <yan]                                       
      2221 2000-06-20 05:39 ┗[Tamon <tamon@xxxxxxx]                                       
->    2224 2000-06-20 18:51  ┗[<moeru@xxxxxxxxxx>  ]                                     
      2225 2000-06-21 01:27   ┗[Tamon <tamon@xxxxxxx]                                   
      2226 2000-06-21 18:12    ┗[<moeru@xxxxxxxxxx>  ] プログラム効率とデータベースの処理スピード
      2227 2000-06-21 23:39     ┗[とみたまさひろ <tomm]                               
      2228 2000-06-22 17:08      ┗[<moeru@xxxxxxxxxx>  ]