2006年7月 5日

[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@xxxxx )
http://www.venus.dti.ne.jp/~uno/ http://d.hatena.ne.jp/uno/

投稿者 xml-rpc : 2006年7月 5日 09:56
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/38983
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。