当前位置: 首页 > 面试题库 >

在SQL语句中使用WHERE 1 = 1的目的是什么?[复制]

包修贤
2023-03-14
问题内容

我已经在不同的查询示例中看到了很多,而且可能涉及所有SQL引擎。

如果存在没有条件的查询,定义的人员(特别是ORM框架)通常会添加始终为真的条件WHERE 1 = 1或类似条件。

所以代替

SELECT id, name FROM users;

他们使用

SELECT id, name FROM users WHERE 1 = 1;

我想到的唯一可能的原因是,如果要动态添加条件,则不必担心会剥离初始条件,AND1 = 1如果查询中存在实际条件,则仍然经常会剥离此条件。

CakePHP的实际示例(由框架生成):

(无条件)

SELECT `User`.`id`, `User`.`login`
FROM `users` AS `User` WHERE 1 = 1 
ORDER BY `User`.`id` ASC;

(有条件)

SELECT `User`.`id`, `User`.`login`
FROM `users` AS `User` 
WHERE `User`.`login` = 'me@example.com'
LIMIT 1;

有什么理由要增加这种额外条件吗?


问题答案:

是的,通常是因为它以“ where 1 = 0”开头,从而迫使语句失败。

这是一种比较幼稚的方法,可以将其包装在事务中,而不必在最后提交它,以html" target="_blank">测试您的查询。(这是首选方法)。



 类似资料:
  • 问题内容: 我正在阅读一些工作中的旧代码,并注意到有多个带有子句的视图。这有什么作用? 例子: 问题答案: 这: …被称为“序数”-数字代表基于SELECT子句中定义的列数的列。在您提供的查询中,它表示: 不建议这样做,因为: 这不是很明显/明确 如果列顺序发生变化,则查询仍然有效,因此您可能会冒意外的顺序进行排序

  • 问题内容: 什么是语句的简单基本解释是什么,如何在中使用它? 它和语句之间有什么区别? 问题答案: 该函数在控制台中写入一个字符串,即“打印”。该语句使您的函数退出并将值返回给其调用者。通常,功能的要点是接受输入并返回某些内容。当函数准备向其调用者返回值时使用该语句。 例如,这是一个同时使用和的函数: 现在,您可以运行调用的代码,如下所示: 如果将其作为脚本(例如.py文件)而不是在Python解

  • 问题内容: 为什么有人在SQL子句中使用(通过连接字符串获得的两种SQL,无论哪种视图定义) 我在某个地方看到过,它将被用来防止SQL注入,但是看起来很奇怪。 如果进行注射,结果将与相同。 稍后编辑:视图定义中的用法如何? 谢谢您的回答。 仍然,我不明白为什么有人会使用这种构造来定义视图,还是在存储过程中使用它。 以这个为例: 问题答案: 如果条件列表在编译时未知,而是在运行时生成,则不必担心是否

  • 问题内容: 在 代表什么? 谢谢。 问题答案: a是表 ADMIN* 的别名 * SQL别名

  • 问题内容: 我的函数产生: 最后的“ 1”是什么意思?PHP手册中关于如何解析的输出不是很清楚。 问题答案: 你可能有。删除构造。而且…您需要解析其输出什么?当然,有更好的方法可以解决您的问题。

  • 问题内容: 我对使用数据库非常陌生。现在我可以写,,,和命令。但是我看过很多我们喜欢写的论坛: …代替: 为什么我们总是喜欢使用参数,我将如何使用它们? 我想知道第一种方法的用途和好处。我什至听说过SQL注入,但是我不太了解。我什至不知道SQL注入是否与我的问题有关。 问题答案: 当数据库与程序界面(例如桌面程序或网站)结合使用时,使用参数有助于防止 SQL注入攻击 。 在您的示例中,用户可以通过