之前一直不太明白,sql语句里为什么要写where 1=1
提升某种执行效率?
其实,1=1 是永恒成立的,意思无条件的,也就是说在SQL语句中有没有这个1=1都可以。
这个1=1常用于应用程序根据用户选择项的不同拼凑where条件时用的。
如:web界面查询用户的信息,where默认为1=1,这样用户即使不选择任何条件,sql查询也不会出错。如果用户选择了姓名,那么where变成了where 1=1 and 姓名='用户输入的姓名',如果还选择了其他的条件,就不断在where 条件后追加 and语句就行了。
如果不用1=1的话,每加一个条件,都要判断前面有没有where 条件,如果没有就写where ...,有就写and语句,因此此时用1=1可以简化了应用程序的复杂度。
# 例如
异常情况
// 没有 1 = 1 SQL:select * from TABLE; SQL:select * from TABLE and XZQBM= '430200'; // 含有 1 = 1 SQL:select * from TABLE WHERE 1 = 1; SQL:select * from TABLE WHERE 1 = 1 and XZQBM= '430200';