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

共 910字,需浏览 2分钟

 ·

2019-12-19 23:26

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


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”而导致语法错误。


动态SQL中连接AND条件


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


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


select * from table where 1=1


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


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


建议查询时增加必输项,即where 1=1后面追加一些常用的必选条件,并且将这些必选条件建立适当的索引,效率会大大提高 


拷贝表 


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


复制表结构 


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


(完)

e2351e36e711e5e4cea8f22c8f9f781f.webp

近期热门推荐?


1.会员还多花50元才能看网剧大结局,人民日报怒批:吃相太难看

2.是时候扔掉 Postman 了,试试 IntelliJ IDEA 自带的高能神器!

3.假如有人把支付宝存储服务器炸了

4.程序员除了会CRUD之外,还要知道CQRS!

5.2018年所有精华文章汇总,错过了血亏!


关注公众号,回复“BAT”
送进军BAT超全优质视频资源



点赞是最大的支持 b17d5283c5472ccdd45f2b3349060e7e.webp


浏览 34
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐