SQL WHERE 1の意味について
SQL文でときどき
SELECT fuga FROM hoges WHERE 1
といった書き方を見かけたのですがどういった意味なのか分からなかったので、調べたので記載いたします。
まず上記のSQL文は
SELECT fuga FROM hoges
と結果は変わりません。 [where 1]に関してですが、MySQLでは整数の1はTRUEと同じになります。
そしてWHEREで指定する条件が真ならば、すべての行が選択されるので WHEREを指定しない、[SELECT * FROM hoges]と結果は同じになります。
ではなぜ結果が同じにもかかわらず、[where 1]などする必要があるのかですが、 まずメリットとしましてWHEREに追加する条件を「AND」で書き始めることができます。
以下のような書き方が出来ます。
SELECT fuga FROM hoges WHERE 1 AND id = 10 AND rank = 5
このように書くと[WHERE]の条件の編集が楽になります。 WHERE句の条件を何度も変更して試行錯誤するような場合はこう書いておくといいと思います。
そしてもう1つはPHPスクリプトでSQLを組み立てるときに楽になるというところです。 SQLを組み立てるときに「1つ目の条件ならWHEREで指定する」という書き方が面倒なので、 あらかじめ WHERE = 1 という全ての行を選択する条件をつけておいて、 それ以降の条件を足していくようにしておいたほうが楽になります。
以下のサイトを参考にいたしました。
phpMyAdminのSELECT文に付加される「WHERE 1」とは
現在CakePHPでデータを検索して表示するアプリを作っているので スクリプトでDBからデータを持ってくる処理を書いたら再度 記載いたします。
それでは