Posted at

SQLを動的に作る時の小技

More than 1 year has passed since last update.

WHERE句にAND条件をループで出力させるときは、ループ前に1 = 1を書く。

SELECT *

FROM テーブル名
WHERE 1 = 1
<CFLOOP ループ条件>
AND カラム名 = #変数名#
</CFLOOP>

OR条件をループで出力させる時は、ループ前に1 = 0を書く。

SELECT *

FROM テーブル名
WHERE 1 = 0
<CFLOOP ループ条件>
OR カラム名 = #変数名#
</CFLOOP>

こうすることで、「1回目のループはANDを出力しないようにIF文を入れる」とかやらなくて済みます。

(ColdFusionで書きましたが、言語は何にでも置き換えできるかと思います)