SQL中where 1 = 1的用处

文章目录

            • 1. where 1 <> 1
            • 2. where 1 = 1
            • 3. 不用where 1=1 在多条件查询中的困扰

1. where 1 <> 1
where 1 = 1;--永远为真
where 1 <> 1--永远为假

他俩的作用主要是一个条件永远为真,一个永远为假,所以这里只是说 1= 1的情况,但是不限于这样,其它永远为真/假的条件语句也同理
where 1 <> 1 用于只复制表结构,不取数据

create table t2 as select * from t1 where 1 <> 1;

分析:
(1)create table t2 as select * from t1,这个动作就会先将t1 的表结构,也就是有哪些字段啊复制到 t1,此时表框架有了,还没内容;

(2)没有 where 1 <> 1 条件的话,就是将t1表整个复制给t2,一模一样的字段和数据,这个问题不大;

(3)加了 where 1 <> 1,这个条件永远为假,所以用 t1表中的数据永远不会复制到 t2里去,此时的结果就是,t2 就是一个空架子;

明白了吧,这样读取表的结构,而不用考虑表中的数据,节省了内存,也可以不用保存结果集,用于快速建表。

2. where 1 = 1

where 1 = 1 用于动态SQL,规范语句
where 1=1; 这个条件始终为True,在不定数量查询条件情况下,1=1可以很方便的规范语句。主要用于以下这种形式的动态多条件查询语句

select name,... from table1 
where 1 = 1 and condition1 and condition2 and ...
3. 不用where 1=1 在多条件查询中的困扰

举个例子,如果您做查询页面,并且,可查询的选项有多个,同时,还让用户自行选择并输入查询关键词,那么,按平时的查询语句的动态构造,代码大体如下:

tring MySqlStr=”select * from table where”;if(Age.Text.Lenght>0){MySqlStr=MySqlStr+“Age=+“‘Age.Text’“;}if(Address.Text.Lenght>0){MySqlStr=MySqlStr+“and Address=+“‘Address.Text’“;}

①种假设
如果上述的两个IF判断语句,均为True,即用户都输入了查询词,那么,最终的MySqlStr动态构造语句变为:

MySqlStr=”select * from table where Age=‘18’ and Address=‘云南省文山州广南县小波吗村’”

可以看得出来,这是一条完整的正确的SQL查询语句,能够正确的被执行,并根据数据库是否存在记录,返回数据。

②种假设
如果上述的两个IF判断语句不成立,那么,最终的MySqlStr动态构造语句变为:
MySqlStr=”select * from table where“
4. 使用 where 1=1 的好处
假如我们将上述的语句改为:

string MySqlStr=”select * from table where 1=1 ”;if(Age.Text.Lenght>0){MySqlStr=MySqlStr+“and Age=+“‘Age.Text’“;}if(Address.Text.Lenght>0){MySqlStr=MySqlStr+“and Address=+“‘Address.Text’“;}

现在,也存在两种假设
①种假设
如果两个IF都成立,那么,语句变为:

MySqlStr=”select * from table where 1=1 and Age=‘18’ and Address=‘云南省文山州广南县小波吗村’”,很明显,该语句是一条正确的语句,能够正确执行,如果数据库有记录,肯定会被查询到。

②种假设
如果两个IF都不成立,那么,语句变为:

MySqlStr=”select * from table where 1=1”,现在,我们来看这条语句,由于where 1=1 是为True的语句,因此,该条语句语法正确,能够被正确执行,它的作用相当于:MySqlStr=”select * from table”,即返回表中所有数据。

言下之意就是:如果用户在多条件查询页面中,不选择任何字段、不输入任何关键词,那么,必将返回表中所有数据;如果用户在页面中,选择了部分字段并且输入了部分查询关键词,那么,就按用户设置的条件进行查询。

说到这里,其实,where 1=1的应用,不是什么高级的应用,也不是所谓的智能化的构造,仅仅只是为了满足多条件查询页面中不确定的各种因素而采用的一种构造一条正确能运行的动态SQL语句的一种方法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/519462.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

stm32g474教程_杜洋老师:STM32教程,STM32视频教程

单片机也叫做单片微型计算机&#xff0c;简单来说就是集CPU(运算、控制)、RAM(数据存储-内存)、ROM(程序存储)、输入输出设备(串口、并口等)和中断系统处于同一芯片的器件&#xff0c;是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器…

Pod在多可用区worker节点上的高可用部署

一、 需求分析 当前kubernetes集群中的worker节点可以支持添加多可用区中的ECS&#xff0c;这种部署方式的目的是可以让一个应用的多个pod&#xff08;至少两个&#xff09;能够分布在不同的可用区&#xff0c;起码不能分布在同一个可用区&#xff0c;已达到高可用或者同…

揭秘:蚂蚁金服bPaaS究竟是什么?

去年9月&#xff0c;蚂蚁金服在杭州云栖ATEC发布了分布式金融核心套件bPaaS&#xff08; Business Platform As a Service &#xff09;&#xff0c;对外开放自身沉淀的“产品合约”、“资产交换”、“资产核心”、“会计核算”、“计价” 等金融核心组件&#xff0c;而这款号称…

云计算的 2020:云原生崛起,重新定义软件!

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者 | Ashish Sukhadeve译者 | 弯月责编 | 唐小引封图 | CSDN 付费自图虫创意出品 | CSDN 云计算&#xff08;ID&#xff1a;CSDNcloud&#xff09;随着 2006 年末 AWS S3 数据存储的问世&#xff0c;云计算发展成为了 IT 行业的三…

用PL/SQL Develpoer工具完成导入和导出

文章目录一、用PL/SQL Develpoer工具完成导入导出1. 导出2. 导入3. 补充前言&#xff1a;首先&#xff0c;我们导入导出数据&#xff0c;肯定是要通过oracle自带的可运行程序来完成数据的导入导出工作&#xff0c;imp.exe 和exp.exe这两个可运行文件都放在oracle安装目录下的BI…

mysql修改表结构例子_mysql修改表结构方法实例详解

本文实例讲述了mysql修改表结构方法。分享给大家供大家参考。具体如下&#xff1a;mysql修改表结构使用ALTER TABLE语句&#xff0c;下面就为您详细介绍mysql修改表结构的语句写法&#xff0c;希望对您学习mysql修改表结构方面能有所帮助。 ALTER [IGNORE] TABLE tbl_name alte…

关于Paxos 幽灵复现问题的看法

由于郁白之前写的关于Multi-Paxos 的文章流传非常广, 原文提出了一个叫"幽灵复现" 的问题, 认为这个是一个很诡异的问题, 后续和很多人交流关于一致性协议的时候, 也经常会提起这个问题, 但是其实这个问题我认为就是常见的"第三态"问题加了一层包装而已. …

idea spring boot 修改 html,js 等不用重启即时生效

1、【File】-【Settings】-【Build,Execution,Deplyment】-【Compiler】&#xff0c;选中打勾 Build project automatically 2、 组合键&#xff1a;ShiftCtrlAlt/&#xff0c;选择 Registry &#xff0c;选中打勾 compiler.automake.allow.when.app.running” 3、找到你要运…

MySQL中update修改数据与原数据相同会再次执行吗

背景 本文主要测试MySQL执行update语句时&#xff0c;针对与原数据&#xff08;即未修改&#xff09;相同的update语句会在MySQL内部重新执行吗&#xff1f; 测试环境 MySQL5.7.25Centos 7.4 binlog_format为ROW 参数 rootlocalhost : (none) 04:53:15> show variables…

继续增援武汉,紫光及新华三集团对火神山和雷神山医院捐赠设备!

继续驰援&#xff01;紫光及旗下新华三继火神山医院后再向雷神山医院捐赠全套网络及安全设备 为进一步加大对武汉新型冠状病毒肺炎疫情防控工作的支持&#xff0c;紫光集团以及旗下新华三集团1月27日决定在对武汉火神山医院捐赠网络通信与信息安全设备以及确保设备实施工作的基…

mysql php pdo_php PDO mysql写法

php PDO写法连接mysql&#xff1b;写法一&#xff1a;$db"mysql:hostlocalhost;dbnamesql" &#xff1b; //连接数据&#xff0c;地址localhost&#xff1b;数据库名称sql&#xff1b;$username"root"; //数据库登录账号&#xff1b;$password"root&q…

通过asm动态构造class文件

<!--动态生成class文件--><dependency><groupId>asm</groupId><artifactId>asm</artifactId><version>3.3.1</version></dependency>工具类 package com.gblfy.chapter2;import java.util.ArrayList; import java.util…

阿里巴巴微服务开源项目盘点(持续更新)

大前端、微服务、数据库、更多精彩&#xff0c;尽在开发者分会场 【Apache Dubbo】 Apache Dubbo 是一款高性能、轻量级的开源Java RPC框架&#xff0c;是国内影响力最大、使用最广泛的开源服务框架之一&#xff0c;它提供了三大核心能力&#xff1a;面向接口的远程方法调用&…

100行Python代码理解深度学习关键概念:从头构建恶性肿瘤检测网络

在构建乳腺癌预测神经网络过程中&#xff0c;我们主要分为3大部分&#xff1a; 1.用Python从零开始创建一个神经网络&#xff0c;并使用梯度下降算法训练模型。 2.在该神经网络中使用威斯康星乳腺癌数据集&#xff0c;根据9种不同的特征&#xff0c;预测肿瘤是良性还是恶性的…

开发者在行动!中国防疫开源项目登上 GitHub TOP 榜

用开发者们的方式支援这场没有硝烟的战争&#xff01;整理 | 唐小引出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;截止北京时间 1 月 28 日下午 15:47&#xff0c;全国确诊新型冠状病毒的数字已经到达了 4586 例&#xff0c;疑似高达 6973 例&#xff0c;医护人员…

mysql 主从备份 主服务器配置_同一服务器配置Mysql主从备份

因为是在同一服务器上配置并且没有使用虚拟机&#xff0c;所以在网上找资料是找到的写的不全&#xff0c;写的好的又没百度到&#xff0c;你说配置难么其实也跟学自行车一样&#xff01;准备环境Windows10主库 Mysql 5.6.21从库 Mysql 5.6.28一般情况从库是要比主库版本高的&am…

jdk8 Metaspace 调优

https://blog.csdn.net/bolg_hero/article/details/78189621

自动化测试|录制回放效果差异检测

概述 回归测试是指修改了旧代码后&#xff0c;重新进行测试以确认修改没有引入新的错误或导致其他的代码出现错误。传统的自动化回归测试需要手动编写脚本获得页面元素的视图树&#xff0c;与原有的元素视图树进行比对。当功能进行频繁迭代时&#xff0c;测试同学维护这些视图…

为什么我学了6个月Python,还是找不到工作?

在知乎上有一个特别火的问题&#xff1a;为什么学了Python&#xff0c;我还是找不到工作&#xff1f;有人说Python语言不行&#xff0c;有人说中国Python根本就没公司用。在大家群嘲的背后&#xff0c;我们来分析一下&#xff1a;为什么大家都不看好Python&#xff1f;学Python…

阿里工程师养了只“二哈”,专治讨厌的骚扰电话

前几天的3.15晚会上曝光了利用智能机器人&#xff0c;一天打4万个骚扰电话&#xff0c;从而赚取利润的黑色产业链。 阿里的工程师恼了&#xff0c;技术是用来让人们生活变美好的&#xff0c;不是被利用来走向阴暗的。 机器人的问题交给机器人&#xff01; 工程师们用业余时间…