查看原文
其他

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

架构师编辑部 架构师专栏 2022-05-06

大家好,我是磊哥。


今天,磊哥,跟大家,分享一下,程序员在编程过程中,经常会在代码中使用到“where 1=1”,这是为什么呢?


这段代码应该是由程序(例如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;


所以在查询时,where1=1的后面需要增加其它条件,并且给这些条件建立适当的索引,效率就会大大提高。

近期技术热文

1、各种陷进,被 JDK 方法,给坑哭了!!

2、Java 对象不使用,要赋值为 null 吗?
3、面试官问:Redis变慢了,如何快速排查?
4、最近,我在Spring的BeanUtils踩了不少坑~


给大家推荐一个公众号:ApachePulsar

这里有关于云原生时代“消息中间件之王” Apache Pulsar “最全”技术干货;据说架构设计超越 Kafka,是强势后浪,外加硬核技术分享、资深大牛社群答疑、不定期线下聚会,带你解锁 Pulsar 开源大招!

福利派送(关注公众号后领取):

1、发送关键词“集锦”,立即免费领取“史上最全”消息队列技术干货文章、视频学习资料,限量发送 100 份,先到先得!
2、发送关键词“入群”,加入 Pulsar 技术交流群;
3、发送关键词“抽奖”,抽取限量版 Pulsar 周边~快来参与吧!(截止日期:2021年3月22日)

⬆长按识别关注

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存