SQLの条件に0=0のような記述を見かけます。
変わった書き方の条件ですが、これは「全てが正である」事を意味しており、結合条件の場合はCROSS JOINと同じです。
下記の例で言えば、結合するsub_tableの全ての行が結合されます。
ON句が省略できないDBMSを考慮してわざとこういった書き方をするケースもあります。
SELECT * FROM main_table INNER JOIN sub_table ON 0=0
WHEREでの適用
こういった書き方はWHERE句でも可能で WHERE (1=1)のような記述をする事も可能です。
WHERE句を設定すると検索対象によってWHERE句の検索条件が増減しますが、プログラムなどでWHERE句以降の検索条件を動的につなげたい時に使ったりします。
これの何が便利かというと、プログラム内でWHERE句自体の存在判定をする記述が必要がなくなる事です。
$sql = "SELECT * FROM main_table WHERE (1=1)"; //条件があればあいまい検索を使う if($target_id){ $sql .= "AND id LIKE 'x%'"; }
上記の場合、(1=1)が検索条件となり必ずtrueになるため、main_tableテーブル上のすべてのレコードを取得し、3行目は対象の検索値があれば、(1=1)以降にANDで条件を追加するような実装になると思います。