文章来源:https://zhuanlan.zhihu.com/p/89062863

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

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

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

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(hive)中变量的使用相关推荐

  1. [转] SQL Server中变量的声明和使用方法

    原文地址 SQL Server中变量的声明和使用方法 声明局部变量语法: DECLARE @variable_name DataType 其中 variable_name为局部变量的名称,DataTy ...

  2. mysql sql语句中变量_mysql-sql语句中变量的使用

    最近工作中用到mysql,发现mysql和Oracle差别挺大的,其不像Oracle中存在丰富的分析函数(开窗函数),如rank(),lag(),leaf()等,只能用变量来获取以便达到分析函数的效果 ...

  3. sql 赋值 null_巩固SQL - 窗口函数amp;变量amp;数据透视图

    入数据行业近3年了,这3年的工作时间我绝大多数时间都在写python做分析.但作为合格的一个数据分析师,sql的精通肯定是必不可少的,所以最近疯狂刷sql题,同时也来总结下我以前比较少用的语法. (工 ...

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

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

  5. SQL数据库中临时表、临时变量和WITH AS关键词创建“临时表”的区别

    原文链接:https://www.cnblogs.com/zhaowei303/articles/4204805.html SQL数据库中数据处理时,有时候需要建立临时表,将查询后的结果集放到临时表中 ...

  6. 动态SQL中变量赋值

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

  7. SQL Server中行列转换 Pivot UnPivot (转载)

    SQL Server中行列转换 Pivot UnPivot PIVOT用于将列值旋转为列名(即行转列),在SQL Server 2000可以用聚合函数配合CASE语句实现PIVOT的一般语法是:PIV ...

  8. SQL允许你用EXECUTE执行一个变量中定义的SQL语句,并且允许你在被执行的SQL语句中,再次嵌套入一个变量定义的语句,并且再次在其中用EXECUTE执行它...

    declare @sqlstr varchar(3000) set @sqlstr='declare @subsqlstr varchar(1000);' set @sqlstr=@sqlstr+'s ...

  9. (转载)总结一下SQL语句中引号(')、quotedstr()、('')、format()在SQL语句中的用法...

    总结一下SQL语句中引号(').quotedstr().('').format()在SQL语句中的用法 总结一下SQL语句中引号(').quotedstr().('').format()在SQL语句中 ...

最新文章

  1. excel 案例素材_Excel用了十年,函数千千万,最牛的还是vlookup
  2. 与登录shell相关的文件
  3. 继承能够访问父类私有字段_在单元测试中访问私有字段
  4. 将php源码修改成存在注入的源码,天融信关于ucms系统存在代码注入漏洞的分析...
  5. php 显示中文utf,php adodb 从mysql数据库中输出中文显示到utf编码网页乱码问题
  6. [转]【HttpServlet】HttpServletResponse接口 案例:完成文件下载
  7. springmvc项目,浏览器报404错误的问题
  8. Struts框架可以支持以下哪种程序开发语言?(选择1项)
  9. xp怎么看计算机是多少位的,WinXP系统怎么看电脑是32位还是64位?
  10. 使用Bartend提取K3领料数据以实现发料包装标识批量自动打印
  11. PR曲线与ROC曲线绘制
  12. spring mvc 配置使用定时任务
  13. testerhome学习笔记1_互联网测试技术
  14. 信息化、数字化、数智化
  15. php保存上传的音频文件在哪里,php - 如何在laravel中上传带有文件的音频? - 堆栈内存溢出...
  16. C语言中的有符号与无符号(挖坑)
  17. 跨境物流的主要操作流程是怎样的?
  18. 最小二乘估计,矩阵求导法(正规方程)全推导
  19. linux内核中linux中readl()和writel()函数---用于读写寄存器
  20. 机械中计算机的应用研究,机械设计制造自动化中计算机技术的应用

热门文章

  1. html标签书写注意事项,HTML一些标签注意事项
  2. Hadoop, Hbase
  3. 【机器学习】传统目标检测算法之DPM
  4. JEPaas代码(SQL功能表)通过SQL功能表进行表查询
  5. [学习笔记]后缀自动机
  6. IE6-IE11兼容性问题列表及解决办法
  7. 安装Microsoft Sysprep工具
  8. 微服务采用何种远程调用方式?
  9. jquery中siblings方法配合什么方法一起使用
  10. spring之BeanFactory