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


浏览 18
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报