为什么模糊查询的sql语句中有select * from 表名 where 1=1?,这是什么意思
拼接条件的时候我们用
and 条件=xxx
的形式。
那么如果不写1=1 ,我们必须单独考虑添加的第一个条件为
条件=xxx
而其他条件为
and 条件=xxx
一个简单的办法就是加上 1=1,这样保证表达式永远成立。
1=1永远为真,附加在表达式中不会影响查询。
where 1=1可以直接去掉,查询的结果还是表里所有的数据,where后面加的是查询的限制条件,1=1相当于加了一个与表内容无关的必然为真的限制条件。
因为查询条件可能有多个,客户勾选的多个查询项不固定,所以一般用and xx=连接多个条件,但是不确定哪个条件是这一次客户选择的,所以用where 1=1这个恒成立的条件作为查询条件第一项,如果没有查询这个语句也成立。
相当于if(true) ,意义不大
加这个条件,纯属有病
我们动态拼接查询条件(java什么的。。)的时候一般是在语句后面and XXXX,如果不加1=1的话查询语句就变成了where and xxxx,这样sql语句就是错误的了。。这样是为了保证语句的正确性
这是sql拼接是后写的,怕后面没有值会报错,写一个固定值,没有条件就查询所有记录
select a_id from a where 1=1 and name=#{aType} 这样的时候用的,不加1=1可能报错。
where 1 =1 的用处还是比较大的。在拼接sql时,一般需要先判断条件,如果每个条件都不符合,就不应该有where条件