总第162篇/张俊红

我们在学 Python 或者其他编程语言的时候都应该有学过变量这么一个东西,可是 Sql 这种查询语言中怎么也有变量呢?具体有什么用呢?

我们来看一下实际应用场景。

现在有这么一个表 t ,表结构如下:

order_id time1 time2 time3 time4

time1 表示浏览日期,
time2 表示加购物车日期,
time3 表示下订单日期,
time4 表示收货日期。

这四个日期有什么关系呢?就是都有可能不相等,也有可能都相等,还有可能部分相等。如果我们想要看这四个日期都发生在20190801这一天的订单应该怎么看呢?

Sql代码可以这么写:

selectorder_id
fromt
where time1 = "2019-08-01"and time2 = "2019-08-01"and time3 = "2019-08-01"and time4 = "2019-08-01"

那如果现在老板又想要看一下这四个日期都发生在20190808这一天的订单,该怎么看呢?很简单,直接把上面代码中的日期改一下就可以了。如果老板还想别的,也直接改代码中的日期就可以,这样是可以达到目的,但是大家有没有想过,如果一段代码中这种需要改的地方过多,而且代码与代码不是挨在一块的时候,这个时候如果手动去查找并修改的话,很有可能漏掉或改错。

这个时候变量就该出场了,之前讲过,所谓的变量就是一个变化的量,是一个容器,在你可能要更改的地方放一个变量,而不是固定的值,这样每次你要更改的时候,只需要更改变量的值就可以,其他地方的变量也会跟着一起变,省时又省力,美滋滋。

那我们先来看一下 Mysql 数据库中怎么设置变量,以下是在 Mysql 中设置变量day的几种写法:

set @day = "2019-08-01";
set @day := "2019-08-01";
select @day := "2019-08-01";

注意,如果使用 select 关键词进行变量赋值时,不可以使用 = 号,因为会默认把它当作比较运算符,而不是赋值,但是用关键词 set 进行变量赋值时是可以直接用 = 号的。现在变量定义并且赋值好了,对于上面的代码我们就可以这么写了。

set @day = "2019-08-01";
selectorder_id
fromt
where time1 = @dayand time2 = @dayand time3 = @dayand time4 = @day

这样每次要什么日期的数据,只需要改变变量day的值就可以了。

我们再来看看Hql(Hive-sql)中的变量赋值怎么设置,变量赋值的时候也是用的关键词 set,在变量引用那里和 Mysql 稍有不同,需要多加一个参数 hiveconf。

set day = "2019-08-01";
selectorder_id
fromt
where time1 = ${hiveconf:day}and time2 = ${hiveconf:day}and time3 = ${hiveconf:day}and time4 = ${hiveconf:day}

以上就是关于 Mysql 和 Hql 这两种数据库中变量的使用方法,变量的用法很常见,也确实很有用,大家一定要熟练掌握。

你还可以看:

Sql 的执行顺序是怎样的?

Sql 实现数据透视表功能

讲讲你不知道的窗口函数

讲讲 group by 的plus版

介绍一下 information_schema 库

关于 Group 的另一个函数

内连接的两种方式

Sql 中的变量使用相关推荐

  1. Oracle入门(十四.4)之在PL / SQL中使用变量

    一.变量的使用 (1)使用变量的原因 •临时存储数据 •储存值的操作 •可重用性 (2)处理PL / SQL中的变量 变量是: •在声明部分声明并初始化 •在可执行部分中使用并分配新值 变量可以是: ...

  2. sql动态sql给变量复值_在动态SQL中使用变量

    sql动态sql给变量复值 Before we delve into these SQL concepts, note that I like to do all my development in ...

  3. SQL Server 表变量和临时表的区别

    一.表变量 表变量在SQL Server 2000中首次被引入.表变量的具体定义包括列定义,列名,数据类型和约束.而在表变量中可以使用的约束包括主键约束,唯一约束,NULL约束和CHECK约束(外键约 ...

  4. 你知道 Sql 中 left join 的底层原理吗?

    总第165篇/张俊红 01.前言 写过或者学过 Sql 的人应该都知道 left join,知道 left join 的实现的效果,就是保留左表的全部信息,然后把右表往左表上拼接,如果拼不上就是 nu ...

  5. Oracle PL/SQL编程之变量

    注: 以下测试案例所用的表均来自与scott方案,使用前,请确保该用户解锁. 1.简介 和大多数编程语言一样,在编写PL/SQL程序时,可以定义常量和变量,在pl/sql程序中包括有: a.标量类型( ...

  6. 博图如何读取mysql数据_博途使用小结:从SQL中读取数据并给变量赋值

    1.建立内部变量TON_Report,VF01_Runtime,JC01_Runtime,VF05_Runtime,数据类型为Real,长度为2 2.建立查询按钮,点击查询按钮时读取SQL中的数据并赋 ...

  7. [导入]SQL中的临时表和表变量

    我们经常使用临时表和表变量,那现在我们就对临时表和表变量进行一下讨论. 临时表 局部临时表 全局临时表 表变量 临时表 临 时表存储在TempDB数据库中,所有的使用此SQL Server 实例的用户 ...

  8. SQL*Plus中替换变量与定义变量

    替换变量 SQL*Plus中的替换变量又叫替代变量,它一般用来临时存储相关数据:在SQL语句之间传递值.一般使用&或&&前缀来指定替换变量. 关于使用替换变量,一般是利用其创建 ...

  9. 动态SQL中变量赋值

    在动态SQL语句中进行变量的值绑定比较麻烦,这儿做个记录 declare @COUNT int,@sql nvarchar(max) set @sql = 'select @COUNT = count ...

最新文章

  1. Eclipse-常用插件
  2. 什么是闭包,我的理解
  3. 企业IT运维管理的发展有章可寻
  4. HLS视频协议第一弹--centos下面配置ffmpeg,segmenter以适应hls切片需要
  5. 我们又来送书啦!这一次,用做业务的思维讲推荐系统 | 文末福利
  6. UltraEdit批量删除关键字所在的指定行
  7. n个整数,其中有两个数是重复的,要求找出这两个重复的整数
  8. 开关电源中的磁性元件书籍_总结丨PFC开关电源的效率优化措施
  9. Python之线程同步与线程锁
  10. NOIP2012pj文化之旅[floyd]
  11. Solr优化案例分析
  12. Directshow 采集-截屏和显示
  13. 小工具-FTP文件传输(FlashFXP4.4.2 )
  14. android云控开源,Android EasyClient 云台控制开源流媒体摄像机EasyCamera
  15. 【单片机】一文彻底搞懂单片机程序烧录
  16. [python] 分治法查找数组元素的最大值和最小值
  17. 考研英语 - word-list-37
  18. Jupyter notebook 报错 500 : Internal Server Error的解决方法
  19. 基于 YOLOV3的交通车辆检测
  20. 【历史上的今天】3 月 19 日:图灵奖人工智能先驱诞生;微软发布 IE8;Android Auto 上线

热门文章

  1. php一点按钮就下载功能源码,php实现强制文件下载方法的源码参考
  2. java诸神之战游戏_mj回溯算法 - osc_7bgz0no1的个人空间 - OSCHINA - 中文开源技术交流社区...
  3. Java 比特币开发系列教程汇总
  4. 为了30分钟配送,盒马工程师都有哪些“神操作”?
  5. 【c++进阶:c++ 顺序容器vector,string,deque,list,forward_list,array常用性质】
  6. 超云将成为数据中心演化的下一个阶段
  7. java自动猜测文件编码
  8. CGGeometry基础
  9. HDUOJ-----4510 小Q系列故事——为什么时光不能倒流
  10. Java内存原型分析:基本知识