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」の意味は?