在源代码中看到 "where 1=1" 的语句通常不是高级优化技巧,而是一种简化 SQL 查询语句的技巧。
"where 1=1" 语句实际上是一个永真的条件,它不会改变查询结果,但它允许在查询过程中添加更多的条件语句,而无需担心第一个条件语句是以 "and" 或者 "or" 开始。
举个例子,假设我们有一个查询语句:
SELECT *
FROM users
WHERE name = '张三'
AND age > 30
AND city = '杭州'
我们可以使用 "where 1=1" 技巧简化这个查询:
SELECT *
FROM users
WHERE 1=1
AND name = '张三'
AND age > 30
AND city = '杭州'
这个查询和原来的查询是等价的,但它使得在查询过程中添加或删除条件更加容易。例如,我们可以在运行时动态添加一个额外的条件:
SELECT *
FROM users
WHERE 1=1
AND name = '张三'
AND age > 30
AND city = '杭州'
AND country = '中国'
如果没有 "where 1=1" 语句,我们需要在运行时判断第一个条件语句是以 "and" 还是 "or" 开始,才能正确地添加新的条件语句。而有了 "where 1=1" 语句,我们可以简单地在后面添加一个 "and" 语句即可。