SQL 语句中 where 条件后 写上 1=1 是什么意思!

这段代码应该是由程序(例如Java)中生成的,where条件中 1=1 以后的条件是经过 if 块动态变化的。例如:sql

String sql="select * from table_name where 1=1";
if( conditon 1) {
  sql=sql+"  and  var2=value2";
}
if(conditon 2) {
  sql=sql+"  and var3=value3";
}

where 1=1 是为了不where 关键字后面的第一个词直接就是 “and”而致使语法错误。code

动态SQL中链接AND条件索引

where 1=1 是为了不where 关键字后面的第一个词直接就是 “and”而致使语法错误。it

where后面总要有语句,加上了1=1后就能够保证语法不会出错!table

select * from table where 1=1

由于table中根本就没有名称为1的字段,因此该SQL等效于select * from table,效率

这个SQL语句很明显是全表扫描,须要大量的IO操做,数据量越大越慢,select

建议查询时增长必输项,即where 1=1后面追加一些经常使用的必选条件,而且将这些必选条件创建适当的索引,效率会大大提升语法

拷贝表程序

create table table_name  as  select  *  from  Source_table  where  1=1;

复制表结构developer

create table table_name  as  select  *  from  Source_table  where  1 <> 1;

来源:cloud.tencent.com/developer/article/1475146

相关文章
相关标签/搜索