情弱エンジニアのなかのblog

一人前のエンジニアになる為のブログです

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 という全ての行を選択する条件をつけておいて、 それ以降の条件を足していくようにしておいたほうが楽になります。

以下のサイトを参考にいたしました。

SQL: WHERE 1 の意味 - エラーの向こうへ

phpMyAdminのSELECT文に付加される「WHERE 1」とは

現在CakePHPでデータを検索して表示するアプリを作っているので スクリプトでDBからデータを持ってくる処理を書いたら再度 記載いたします。

それでは