之前在捞公司SQL日志的时候发现SQL语句中存在WHERE 1 = 1的句子觉得很奇怪,搜索了一下相关资料发现是用来手动拼接动态SQL语句的,顿时觉得很有意思,但是对于OR的情况下的说法我个人觉得不太确切,于是在这里做一下总结。
首先呢,WHERE 1 = 1 的存在是用在条件语句的开头用于避免单条限制存在AND的情况,举个例子:当我们需要动态拼接多个限制条件的时候,我们需要在条件语句中加上AND,但是如果前台传入的限制条件只有一条的时候,SQL语句就会变成:
SELECT *
FROM TABLE
WHERE AND 条件
这个时候语句就是不合法的,于是我们在前面加上固定的WHERE 1 = 1之后呢:
SELECT *
FROM TABLE
WHERE 1