专栏首页张俊红Sql 中的变量使用

Sql 中的变量使用

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

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

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

order_id

time1

time2

time3

time4

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

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

Sql代码可以这么写:

select
    order_id
from
    t
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";
select
    order_id
from
    t
where time1 = @day
    and time2 = @day
    and time3 = @day
    and time4 = @day

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

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

set day = "2019-08-01";
select
    order_id
from
    t
where time1 = ${hiveconf:day}
    and time2 = ${hiveconf:day}
    and time3 = ${hiveconf:day}
    and time4 = ${hiveconf:day}

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

本文分享自微信公众号 - 张俊红(zhangjunhong0428),作者:张俊红

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-08-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Sklearn参数详解—SVM

    张俊红
  • 利用Python自动发送电子邮件

    收发邮件几乎是每个人每天都需要做的一件事情,对于一些固定每天需要发送的邮件或者是同时需要发送好几十好几百份的时候,我们可以考虑借助Python来自动发送邮件。

    张俊红
  • 爬虫进阶(一)

    总第65篇 往期相关推送: 零基础学习爬虫并实战 房天下数据爬取及简单数据分析 01|背景介绍: 前两篇推文里面涉及的目标爬取对象都比较简单,要么是普通的静...

    张俊红
  • 5个灵魂拷问:Redis 集群的实现原理探讨

    Hello 各位 ,我是公号「八点半技术站」的创作者 - Bruce.D (姓氏:豆)。

    八点半的Bruce、D
  • PHP笔记:系统内置的预定义变量

    预定义变量:系统内部定义的变量,是PHP系统保存的一些常用变量,方便开发者使用,也是PHP系统自动收集的数据结果。

    德顺
  • 从 Spring 集成 MyBatis 到浅析 Java 动态代理

    因为 MyBatis 的易上手性和可控性,使得它成为了 ORM框架中的首选。近日新起了一个项目,所以重新搭建了一下 Spring-mybatis, 下面是搭建笔...

    Java技术江湖
  • 从 Spring 集成 MyBatis 到浅析 Java 动态代理

    因为 MyBatis 的易上手性和可控性,使得它成为了 ORM框架中的首选。近日新起了一个项目,所以重新搭建了一下 Spring-mybatis, 下面是搭建笔...

    黄泽杰
  • 手把手教你绘制临床三线表

    各位科研芝士的小伙伴,本站本着给大家提供科研便利的宗旨,继续给大家提供干货, 一般的临床研究,统计分析就“三把斧”:统计描述、差异性比较和回归建模。R语言完美解...

    百味科研芝士
  • python学习-SVN常用命令

    SVN命令参考:http://riaoo.com/subpages/svn_cmd_reference.html

    py3study
  • 13GJavaScript基础视频,140集实战教学,让你从入门到精通!

    该份资源涵盖了ES标准、BOM以及DOM的大部分内容,特别适合有一定HTML和CSS基础的你学习!

    养码场

扫码关注云+社区

领取腾讯云代金券