【567、源码中常见的 where 1=1 是一种高级优化技巧?】

15 阅读1分钟

在源代码中看到 "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" 语句即可。