WHERE 1=1って? | 株式会社アースリンク

2021年5月31日

WHERE 1=1って?

ソースコードを修正している際に見つけたSQLで「WHERE 1=1」と記述されているものがありました。
どういう意味があるのかと思い調べてみました。

まず「WHERE 1=1」自体に意味はありません。
「WHERE 1」というのはTRUEという意味になります。
「WHERE 1=1」も「1=1」はTRUEです。「WHERE 1」と同じ意味になり、TRUEという事になります。
WHEREがTRUEを返していると言う事は、レコードの抽出条件を全て通過していると言うことになります。
つまり、WHERE句が有っても無くても同じ結果でレコードが抽出されます。

SELECT * FROM テーブル
SELECT * FROM テーブル WHERE 1=1
↑同じ結果になる。

では何のために記述しているのかというと、コードの視認性向上や処理が簡単になるからですね。
プログラムで抽出条件が必要か判定し必要なら「WHERE」+「抽出条件」を追加という流れになります。
そして複数条件の場合2つめからの条件では「論理演算子」+「抽出条件」となります

sql = select * from テーブル

if(条件必要 == yes){
    sql = sql + “where 抽出条件
}

if(条件2つめ必要 == yes){
    sql = sql + “AND 抽出条件
}

「WHERE 1=1」を記述する事で、抽出条件を追加する際に「AND 抽出条件」の部分だけを必要な数追加するだけでよくなります。

sql = select * from テーブル where 1=1

if(条件追加必要 == yes){
    sql = sql + “AND 抽出条件
}

if(条件2つめ必要 == yes){
    sql = sql + “AND 抽出条件
}

上記の方が管理しやすいです。

・全件取得
SELECT * FROM テーブル WHERE 1=1

・抽出条件1個
SELECT * FROM テーブル WHERE 1=1 AND 抽出条件

・抽出条件2個
SELECT * FROM テーブル WHERE 1=1 AND 抽出条件 AND 抽出条件

本来のSQLでは使わないと思いますが、プログラムを書く際には便利だと思います。

Contact
お問い合わせ

電話番号0120 - 889 - 236

受付時間:平日 9:00-18:00