我的编程空间,编程开发者的网络收藏夹
学习永远不晚

mysql中where1=1是什么意思

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

mysql中where1=1是什么意思

这篇文章主要介绍“mysql中where1=1是什么意思”,在日常操作中,相信很多人在mysql中where1=1是什么意思问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”mysql中where1=1是什么意思”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

where 1=1

先来看一段代码

<select id="queryBookInfo" parameterType="com.ths.platform.entity.BookInfo" resultType="java.lang.Integer"> select count(id) from t_book t where 1=1<if test="title !=null and title !='' "> AND title = #{title} </if> <if test="author !=null and author !='' "> AND author = #{author}</if> </select>

上面的代码很熟悉,就是查询符合条件的总条数。在mybatis中常用到if标签判断where子句后的条件,为防止首字段为空导致sql报错。没错 ,当遇到多个查询条件,使用where 1=1 可以很方便的解决我们条件为空的问题,那么这么写 有什么问题吗 ?

网上有很多人说,这样会引发性能问题,可能会让索引失效,那么我们今天来实测一下,会不会不走索引

实测

title字段已经加上索引,我们通过EXPLAIN看下

EXPLAIN SELECT * FROM t_book WHERE title = '且在人间';

mysql中where1=1是什么意思

EXPLAIN SELECT * FROM t_book WHERE 1=1 AND title = '且在人间';

mysql中where1=1是什么意思

对比上面两种我们会发现 可以看到possible_keys(可能使用的索引) 和 key(实际使用的索引)都使用到了索引进行检索。

结论

where 1=1 也会走索引,不影响查询效率,我们写的sql指令会被mysql 进行解析优化成自己的处理指令,在这个过程中1 = 1这类无意义的条件将会被优化。使用explain EXTENDED sql 进行校对,发现确实where1=1这类条件会被mysql的优化器所优化掉。

那么我们在mybatis当中可以改变一下写法,因为毕竟mysql优化器也是需要时间的,虽然是走了索引,但是当数据量很大时,还是会有影响的,所以我们建议代码这样写:

<select id="queryBookInfo" parameterType="com.ths.platform.entity.BookInfo" resultType="java.lang.Integer"> select count(*) from t_book t<where><if test="title !=null and title !='' "> title = #{title} </if><if test="author !=null and author !='' ">  AND author = #{author}</if></where> </select>

我们用where标签代替。

where 标签

MyBatis 有一个简单且适合大多数场景的解决办法。而在其他场景中,可以对其进行自定义以符合需求。而这,只需要一处简单的改动:

<select id="findActiveBlogLike"     resultType="Blog">  SELECT * FROM BLOG  <where>    <if test="state != null">         state = #{state}    </if>    <if test="title != null">        AND title like #{title}    </if>    <if test="author != null and author.name != null">        AND author_name like #{author.name}    </if>  </where></select>

where 元素只会在子元素返回任何内容的情况下才插入 “WHERE” 子句。而且,若子句的开头为 “AND” 或 “OR”,where 元素也会将它们去除。

或者使用 where 1=1

到此,关于“mysql中where1=1是什么意思”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

mysql中where1=1是什么意思

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

mysql中where1=1是什么意思

这篇文章主要介绍“mysql中where1=1是什么意思”,在日常操作中,相信很多人在mysql中where1=1是什么意思问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”mysql中where1=1是什么意思
2023-06-22

mysql中的where是什么意思

where 子句,在 mysql 中用于根据特定条件筛选行。1. 结构:select from where 2. 用法:指定筛选条件,使用关系运算符比较列值、常量或其他列值。3. 作用:检索特定数据,减少处理时间,优化数据操作和组合查
mysql中的where是什么意思
2024-04-29

where在mysql是什么意思

where 关键字用于指定条件过滤 mysql 查询结果,只返回符合条件的行。语法:select ... from table_name where condition。可使用逻辑运算符 (and、or、not) 和比较运算符 (=、!=、
where在mysql是什么意思
2024-04-22

MySQL 中的“where 1=1”语句是什么?

在 MySQL 中,“Where 1=1”会生成表中的所有行,因为该语句始终为真。一个为了更好地理解该语句,给出的示例如下 -首先,在 create 命令的帮助下创建一个表。给出如下 -mysql> CREATE table WhereC
2023-10-22

sql中where什么意思

where 子句用于从表中过滤数据,它基于指定条件选择特定的行。条件可以是列名、运算符和常量的组合,可以使用 and 和 or 运算符组合条件。好处包括提高查询性能、数据精度和灵活性。WHERE 子句在 SQL 中的用法WHERE 子句用
sql中where什么意思
2024-04-29

c语言中x[1]是什么意思

c语言中,x[1]是指数组x的第二个元素。数组是一种数据结构,由相同类型元素组成,每个元素拥有唯一索引从0开始。x[1]等价于*(x+1),访问数组中第二个元素,可用于访问和修改该元素。c语言中 x[1] 的含义在 C 语言中,x[1]
c语言中x[1]是什么意思
2024-05-02

mysql中*是什么意思

在 mysql 中,* 的含义MySQL 中的星号 (*) 代表“所有”。在不同上下文中,它具有不同的用法。1. 选择所有列使用 * 可以选择表中的所有列:SELECT * FROM table_
mysql中*是什么意思
2024-04-26

php中id 1指的是什么意思

这篇文章将为大家详细讲解有关php中id 1指的是什么意思,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。php中id 1表示PHP GET方式传值,完整语句如“mypage?id=1”,get是把参数数据
2023-06-26

mysql中%是什么意思

mysql 中的百分号 % 是一个通配符,可匹配任意字符序列。它可用于:1. 字符串匹配(如:like '%string%'); 2. 范围查询(如:between '%start%' and '%end%'); 3. 正则表达式匹配(如:
mysql中%是什么意思
2024-04-26

mysql中@是什么意思

mysql 中 @ 符号有两种用途:指定变量(@变量名)和连接表或列名(@表名或@列名),表示数据库中一个临时或派生表的别名。MySQL 中 @ 符号的含义@ 符号在 MySQL 中有两种主要用途:1. 指定变量@ 符号用于指定变量,
mysql中@是什么意思
2024-04-26

linux shell中2>&1是什么意思

这篇文章主要介绍了linux shell中2>&1是什么意思,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。linux shell 中"2>&1"的含义脚本:nohup /mn
2023-06-09

php中id 1什么意思

php中id 1表示PHP GET方式传值,完整语句如“mypage?id=1”,get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。
2016-11-29

c语言中x*=x+1是什么意思

c语言中,x *= x + 1 表达式将 x 更新为本身与自身加 1 后乘积。先计算 x + 1。将 x 乘以第一步计算的值。将 x 更新为计算结果。C 语言中 x *= x + 1 的含义C 语言中的 *= 运算符是一个复合赋值运算符,
c语言中x*=x+1是什么意思
2024-04-29

mysql中的%是什么意思

mysql 中的 % 通配符用于在 like 操作符中进行模式匹配,表示零个或多个字符。它可用于查找以给定模式开头的所有字符串或包含给定模式的字符串,还可以可选地查找以给定模式结尾的字符串。除了 % 之外,mysql 还提供了其他通配符,包
mysql中的%是什么意思
2024-04-26

编程热搜

目录