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

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