SQL中 为啥要避免在where后使用'1=1'这种表达式作为部分条件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL中 为啥要避免在where后使用'1=1'这种表达式作为部分条件相关的知识,希望对你有一定的参考价值。

并非一定要避免,而是数据量很多的情况下,这种条件会导致sql执行的时候忽略掉索引的优势,导致查询效率很低。所以,只在数据量很大的时候才是需要尽量避免使用。
数据量少的时候,用这个还是很方便的。

参考资料:http://blog.csdn.net/farawayhome/article/details/6621114

参考技术A 因为1=1不管在任何条件下都是成立的,等于没加条件,所以如果在update时用这个作为条件,容易犯下把全部的数据都改了的错误操作 参考技术B 是利用程序员对用户输入数据的合法性检测不严或不检测的特点,故意从客户端提交特殊的代码,从而收集程序及服务器的信息,从而获取想得到的资料。
and user>0,这时,服务器运行Select * from 表名 where 字段=444 and user>0这样的查询,当然,这个语句是运行不下去的,肯定出错,本回答被提问者采纳
参考技术C 比如你要筛选数据,筛选的数据有好几个,这个时候你就要用where条件了。在我看来加上1=1是为了在代码中避免出错,如果加and符号,where 1=1 and XXX 这样子就不会出错,如果加的查询条件是and 并且前边只有where的时候就会出错。
多用于前台筛选,加筛选条件。

以上是关于SQL中 为啥要避免在where后使用'1=1'这种表达式作为部分条件的主要内容,如果未能解决你的问题,请参考以下文章

SQL查询语句中,为啥在WHERE后面查询条件有的要加单引号,有的不用加,啥时候加,啥时候不加?

为啥聚集函数不能出现在where子句中

sql关于索引的优化部分

where `id` ='".$_GET['id']."'" 最后这句为啥这么多引号?

sql语句优化技巧

SQL中的WHERE子句中为啥不允许应用聚集函数呢?请通俗的解释一下或者谈谈自己的见解!