在SQL语句中使用WHERE 1 = 1的目的是什么?[复制]
技术问答
279 人阅读
|
0 人回复
|
2023-09-14
|
我在不同的查询示例中看到了很多,可能涉及到所有SQL引擎。, f5 b( |8 Y* Z( {# G8 V
如有无条件查询,定义人员(尤其是ORM框架通常会添加永远是真实的条件WHERE 1 = 1或类似条件。 }8 E9 S0 G5 r
所以代替/ k2 o- u- x3 Y! V
SELECT id,name FROM users;他们使用1 W1 }) q2 ~" A; n; l4 Y2 t
SELECT id,name FROM users WHERE 1 = 1;唯一可能的原因是,如果要动态添加条件,就不必担心剥离初始条件,AND但1 = 1如果查询中有实际情况,这种情况往往会被剥离。/ ]& D$ ~/ H- }# i7 ]) R- g) F
CakePHP实际示例(由框架生成):! Q; W# B! d8 [/ G% J" r
(无条件)
2 ? z1 j4 e. VSELECT `User`.`id`,`User`.`login`FROM `users` AS `User` WHERE 1 = 1 ORDER BY `User`.`id` ASC;(有条件)
2 V8 k& G& U8 ~- [: P6 ^# E6 vSELECT `User`.`id`,`User`.`login`FROM `users` AS `User` WHERE `User`.`login` = 'me@example.com'LIMIT 1;增加这种额外条件的原因是什么? o) y% K! i* M- W/ Z
0 t* Q5 m G, N' g. b
解决方案:
' q; z! }" ~: }% l5 s 是的,通常是因为它用 where 1 = 0开头,迫使句子失败。9 {* |4 `1 t7 O. i# l9 A
这是一种幼稚的方法,可以在事务中包装,而不是最后提交,以测试您的查询。(这是首选)。 |
|
|
|
|
|