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> ]