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

mysql:13144

From: UNO Shintaro <UNO Shintaro <uno@xxxxxxxxxx>>
Date: Wed, 05 Jul 2006 09:56:17 +0900
Subject: [mysql 13144] Re: 記号「`」とWHERE 「1」の意味は?

> WHERE 1 の「1」の意味もよくわかりません。
> WHEREという一語だけで、一行を占有したい場合は おまじないとして
> 「1」とつける、そんな雰囲気と推測しているのですが、正しいでしょうか?

WHERE 1 は、必ず真という条件での検索で、検索条件がないのと同じ意味です。
(1という数値を真偽値として扱えるかどうかはRDBMSによって違うので、
interoperabilityを考慮するなら WHERE 0=0 のような表現がベターです。)

定番なのですが、これの使いどころをカンタンに説明すると、

たとえば
SELECT * FROM tableA
というSQLを基本として、場合によって色々とAND検索条件を重ねて
絞り込み検索を実行させたいとします。このとき、

条件なし:      SELECT * FROM tableA
条件1つ目追加: SELECT * FROM tableA where columnA=123
               → 「where columnA=123」を付ける
条件2つ目追加: SELECT * FROM tableA where columnA=123 and columnB='ABC'
               → 「and columnB='ABC'」を付ける

このように、いくつ目の条件を追加するかによって「where ...」を加えるか
「and ...」を加えるかが違ってきます。ここで元のSQLを
SELECT * FROM tableA WHERE 0=0
として、これに検索条件を加えることにすると、

条件なし:      SELECT * FROM tableA WHERE 0=0
条件1つ目追加: SELECT * FROM tableA WHERE 0=0 and columnA=123
               → 「and columnA=123」を付ける
条件2つ目追加: SELECT * FROM tableA WHERE 0=0 and columnA=123 and columnB='ABC'
               → 「and columnB='ABC'」を付ける

と、いくつ目の条件でも「and ...」を加えれば良いので、
SQLを組み立てる処理(プログラム)がシンプルになります。
もちろん人間にとってのSQLの読みやすさは悪化します。

-- 
UNO Shintaro, 宇野 信太郎  ( mailto:uno@xxxxxxxxxx )
http://www.venus.dti.ne.jp/~uno/  http://d.hatena.ne.jp/uno/

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

     13141 2006-07-04 16:33 [naya <SNA02388@xxxxx] 記号「`」とWHERE 「1」の意味は?        
     13142 2006-07-04 18:55 ┣[SAITO TAKAYOSHI <sai]                                       
     13143 2006-07-04 22:21 ┣[buda <buda@xxxxxxxxx]                                       
->   13144 2006-07-05 09:56 ┣[UNO Shintaro <uno@xx]                                       
     13146 2006-07-06 05:20 ┃┗[info2 <info2@xxxxxxx]                                     
     13153 2006-07-10 16:10 ┗[naya <SNA02388@xxxxx] 【御礼】 Re: 記号「`」とWHERE 「1」の意味は?