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

我是乔帮主 2021-02-09 10:09:18 ⋅ 1035 阅读

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

全部评论: 0

    我有话说:

    挖一挖那些让公司网站瘫痪的SQL“终结者”

    一条慢查询会造成什么后果?之前我一直觉得不就返回数据会慢一些么,用户体验变差? 其实远远不止,我经历过几次线事故,有一次就由一条 SQL 慢查询导致的。 那次一条 SQL 查询耗时达到 2

    DDDplus 1.0.2 发布,轻量级业务台开发框架

    DDDplus 简介 一套轻量级业务台开发框架,以DDD思想为本,致力于业务资产的可沉淀可传承,全方位解决复杂业务场景的扩展问题,实现台核心要素,赋能台建设。 融合了前台复杂生态协作方法论

    1分钟搞定Centos7/LinuxTomcat安装SSL证书

    架构运维篇(四):Centos7/LinuxTomcat安装SSL证书实践

    Druid 1.2.4 版本发布,增强 SQL Parser,支持 JDK8 日期类型

    Druid 1.2.4 版本现已发布,这个一个小的 bug 修复版本,修复了一系列 SQL Parser 的问题,增强对 JDK 8 的支持。 Issues SQL Parser 增强对

    SQL判断是否"存在",还在用 count 操作?

    来源:http://toutiao.com/i6826511837840802315 根据某一条件从数据库表查询 『有』与『没有』,只有两种状态,那为什么在SQL的时候,还要SELECT

    CrateDB 4.3.1 发布,分布式 SQL 数据库

    CrateDB 4.3.1 预发布。Crate 一个开源的大规模的可伸缩的数据存储系统,无需任何系统管理需求。提供强大的搜索功能。用于存储各种表格数据、非结构化数据和二进制对象。并可通过 SQL

    强大的 Lambda 式转 Sql 类库 - SqlSugar 隐藏功能之 Lambda

    使用场景 1、Lambda to sql 一直ORM最难的功能之一,如果有现成的解析库那么自已一个ORM难度将大大降低 2、通过Lambda作为KEY进行缓存操作,特别仓储模式想要拿到表达式

    「小米技术」Soar一键优化工具--SQL优化和改的自动化工具

    SOAR(SQL Optimizer And Rewriter)一个对SQL进行优化和改的自动化工具。由小米人工智能与云平台的数据库团队开发与维护。

    Gradle 6.7.1 发布,修复 6.7 的严重错误

    Gradle 6.7 的修补版本,修复了 Gradle 6.7 的几个严重错误,更新内容包括: 修复反向移植工具链错误的问题 修复安装 Openjdk-11 ,Java 工具链在

    「轻阅读」基于 Flink SQL CDC的实时数据同步方案,附视频

    整理:陈政羽(Flink 社区志愿者)原文:https://mp.weixin.qq.com/s/QNJlacBUlkMT7ksKKSNa5Q Flink 1.11 引入了 Flink SQL

    什么微服务?什么台?阿里的台战略?

    微服务架构将单体应用,按照业务领域拆分为多个高内聚低耦合的小型服务

    Puma 5.2.1 发布,关注高并发的 Ruby HTTP 服务器

    Puma 5.2.1 发布了。Puma 一个简单、快速、线程化并且关注高并发的 HTTP 1.1 服务器,适用于开发和生产的 Ruby/Rack 应用。 本次更新内容包括: 修复 TCP

    2021 年最火的开发语言谁?

    哪种语言会比较火🔥? 开发语言的走势一直都在牵动程序员的心。 2020 年已经过半,时候分析下明年的趋势了。 下面咱们就看下权威的行业数据,看看 2021 年可能排在前 3 的开发语言都有谁

    Julia 1.6.0 发布,高性能动态高级编程语言

    Julia 1.6.0 现已发布。Julia 一个高性能动态高级编程语言。其拥有丰富的函数库,提供了数字精度、精致的增幅器和分布式并行运行方式。核心函数库等大多数库由 Julia 编写,但也用成熟

    Linux Kernel 5.12 rc1 发布

    Linux Kernel 5.12 rc1 已经发布。在邮件,Linus Torvalds 表示由于美国严寒天气,其在合并窗口开始的 6 天里没有电的,所以曾考虑过延长合并窗口,不过他最终没有

    Apache Kylin 3.1.1发布,开源分布式分析引擎

    Apache Kylin简介 Apache Kylin 一个开源的分布式的 OLAP 分析引擎,来自 eBay 公司开发,基于 Hadoop 提供 SQL 接口和 OLAP 接口,支持 TB 到

    消息队列常见问题(一):生产消息队列产生大量的消息堆积会有什么后果?

    大多数消息堆积原因Consumer出现了问题,并且没有被运维/开发监控到即使修复问题,导致大量的消息都积压在 MQ ,那么会造成哪些后果呢?1、消息被丢弃例如 RabbitMQ 的一条消息设置

    ObjectiveSQL 1.3.6 版本发布,过程化 SQL 编程&等价表达式

    ObjectiveSQL 第一个正式版本提供了自动生成代码的特性,替代了简单SQL 的编程的编码工作,紧接着推出复杂SQL的解决方案。 ObjectiveSQL 通过修改Java 编译器,实现了

    Angular 11.1.0 正式发布,支持 TypeScript 4.1

    Angular 一个基于 TypeScript 的开源前端框架,由 Google 的 Angular 团队以及社区共同领导。Angular 由 AngularJS 的同一个开发团队完全重而成的