ORDER BYは0を対象としない・・・?

mysql> SELECT * FROM tb_hoge WHERE mosa ORDER BY mosa DESC;

みたいなクエリを実行すると、
mosaが0のレコードはHITしない。
なぜ・・・?
※調査結果
答えは簡単。
上の式をわかりやすく解釈すると

WHERE 条件 ORDER BY・・・

ってことで、WHEREを解釈した時点でレコードがあればORDER BYするってこと。
で、mosaが0だったら当然、FALSE扱いなので、
WHERE句の解釈の時点で該当レコードがなしとなり、ORDER BYのしようがなくなる。
試しに、

mysql> SELECT * FROM tb_hoge WHERE 1;

ってやるとtb_hogeの全レコードが表示され、

mysql> SELECT * FROM tb_hoge WHERE 0;

ってやるとEmptyになる。
なるほど~。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です