mysql:2220
From: "Ningfeng Yang" <"Ningfeng Yang" <yang@xxxxxxxxxx>>
Date: Tue, 20 Jun 2000 01:24:22 +0900
Subject: [mysql 02220] Re: SELECT 句で演算をした別名は WHERE 句では使えない?
> SELECT句で演算をした別名はWHERE句では使えないでしょうか? Alias のことですね。 > > 以下のようなSQL文を書きました。 > > $result = mysql_query (" > SELECT itemid,title,date,ends - UNIX_TIMESTAMP() timeleft > FROM item > WHERE (ends - UNIX_TIMESTAMP()) < 86400"); > > ここで > > WHERE (ends - UNIX_TIMESTAMP()) < 86400 > じゃなくて > WHERE timeleft < 86400 > ってやりたかったのですけど > > これはMySQLでは、できないのでしょうか? > それともSQL92でもできないものですか? いずれもできないと思います。 SELECT文にはSELECT LIST、FROM CLAUSE、WHERE CLAUSEとORDER BY CLAUSE四つの部 分がありまして、SELECT LISTとFROM CLAUSEの中にAS文を使ってAlias定義できます が、WHERE CLAUSEとORDER BY CLAUSEの中にFROM CLAUSEの中に定義されたものしか使 えないと思います。また、SELECT文もFROM CLAUSEで定義されたテーブルのaliasが使 える。 e.g.: SELECT t1.id, t2.itemname FROM longnametable as t1, longnametable as t2 WHERE t1.identifyID = t2.identifyID; つまり、WHERE文にFROM文で定義されたテーブルのaliasが使えるけど、SELECT LIST に定義されたフィールドのalias使えない。 _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ 楊@京大工学部 E-mail: t25w2620@xxxxxxxxxx (Univ.) yang@xxxxxxxxxx (Home) _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
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> ]