最近工作中用到mysql,发现mysql和Oracle差别挺大的,其不像Oracle中存在丰富的分析函数(开窗函数),如rank(),lag(),leaf()等,只能用变量来获取以便达到分析函数的效果,具体使用方法如下:
eg:
想通过member id进行分组,获取每个用户最新首次操作的时间,实际上就是根据member id分组后取出最早的一条,但是由于没有分析函数不能快速实现,只能用这种方式操作。

select t2.member_id, t2.created_time time from (select t1.id,
t1.member_id,
t1.created_time,
@rownum := @rownum + 1,
if(@member_id = t1.member_id, @rank := @rank + 1, @rank := 1) as rank,
@member_id := t1.member_id
from (select id, member_id, created_time
from t01_et_open_account_step_log
where step = 310
order by member_id asc, created_time asc) t1,
(select @rownum := 0, @member_id := null, @rank := 0) t0) t2 where t2.rank = 1; ORDER BY t2.member_id asc

运行结果:

也许直接看代码不够清晰,先执行里层

select t1.id,
t1.member_id,
t1.created_time,
@rownum := @rownum + 1,
if(@member_id = t1.member_id, @rank := @rank + 1, @rank := 1) as rank,
@member_id := t1.member_id
from (select id, member_id, created_time
from t01_et_open_account_step_log
where step = 310
order by member_id asc, created_time asc) t1,
(select @rownum := 0, @member_id := null, @rank := 0) t0

运行结果:

两者对比较很容易理解mysql中变量@的使用,相当于将Oracle中的分析函数是效果一样的,相当于细分来执行每一步动作,个人感觉这里和Oracle中lag()函数原理很像。

mysql sql语句中变量_mysql-sql语句中变量的使用相关推荐

  1. mysql执行字符串sql结果复制被变量_mysql存储过程-执行字符串变量的sql

    SET @xx="name,bm"; SET @sql1 = CONCAT('select ',@xx,' from people'); prepare s1 from @sql1 ...

  2. mysql的查询语句怎么优化_MySQL查询语句如何优化

    前言查询语句的优化是SQL效率优化的一个方式,可以通过优化sql语句来尽量使用已有的索引,避免全表扫描,从而提高查询效率.最近在对项目中的一些sql进行优化,总结整理了一些方法. 1.尽量避免在 wh ...

  3. 创建bbs mysql语句怎么写_MySQL常用语句 | 小灰灰博客

    常用的语句 查询 select * from bbs where id=1; 增加 insert into bbs (name,data_year) values ("jack", ...

  4. mysql空值判断怎么优化_MySQL查询语句优化的十个小技巧!

    前言 查询语句的优化是SQL效率优化的一个方式,可以通过优化sql语句来尽量使用已有的索引,避免全表扫描,从而提高查询效率.最近在对项目中的一些sql进行优化,总结整理了一些方法. 1.尽量避免在 w ...

  5. mysql 查询绑定变量_MySQL高级特性——绑定变量

    从MySQL 4.1 版本开始,就支持服务器端的绑定变量,这大大提高了客户端和服务器端数据传输的效率 介绍 当创建一个绑定变量 SQL 时,客户端会向服务器发送一个SQL语句的原型.服务器端收到这个S ...

  6. mysql备份表数据库表_mysql 备份数据库中的一张表

    方案一: 备份db1里的t7表[root@stu1 mysql]#  mysqldump -u root -p123 db1 t7 > t7.sql 恢复db1里的t7表[root@stu1 m ...

  7. mysql查询语句 变量_mysql查询语句中用户变量的使用

    先上代码吧 SELECT `notice`.`id` , `notice`.`fid` , `notice`.`has_read` , `notice`.`notice_time` , `notice ...

  8. mysql oracle 查询语句执行顺序_MySQL sql语句执行顺序

    (8)     DISTINCT (1)     FROM (3)      JOIN (2)     ON (4)     WHERE (5)     GROUP BY (6)     HAVING ...

  9. MySQL数据库常用命令_常用SQL语句及命令_MySQL常用语句

    文章目录 一.常用的 SQL 语句 (一)查看当前登录用户 (二)查看当前数据库 (三)如何查看全部用户? (四)创建数据库 (五)选择要操作的数据库 (六)创建表 (七)查看表的结构 (八)往表中插 ...

  10. mysql 语句 简书_MySQL SQL语句

    Mysql数据库:端口号3306,超级用户 root unsigned 正值 修改提示符:--prompt 提示符 常见定义 参数:\D 完整的日期 \d当前数据库 \h服务器名称 \u 当前用户 数 ...

最新文章

  1. 参数检验——当总体分布已知(如总体为正态分布),根据样本数据对总体分布的统计参数进行推断 非参数检验——利用样本数据对总体分布形态等进行推断的方法。...
  2. HTML的a标签置灰不可点击
  3. 【C++深度剖析教程40】使用数值型模板技术计算1+2+3+...+N的值
  4. Remove Duplicates from Sorted List leetcode
  5. caspase3是什么意思_caspase-3
  6. SELECT INTO和INSERT INTO SELECT的区别 类似aaa?a=1b=2c=3d=4,如何将问号以后的数据变为键值对 C# 获取一定区间的随即数 0、1两个值除随机数以外...
  7. 低微漏洞处理办法记录
  8. Matlab图形修饰之色彩处理
  9. 渤海银行天津分行计算机笔试,关于渤海银行笔试经验分享
  10. nginx配置ssl证书实现微信小程序后端接口访问
  11. scratch成绩查询 电子学会图形化编程scratch等级考试四级真题和答案解析2022年6月
  12. 层次高的人,都拥有成长型思维
  13. 有关信息安全的三个案例
  14. VSS2005使用方法
  15. UIP协议栈笔记·一
  16. localparam,parameter,define区别
  17. 新一代VTL实现“新”的数据保护
  18. 苹果cms模板_苹果cms10好看的模板有那些?
  19. STM32学习1——环境搭建
  20. 渠得清如许,源头活水来——2015年年终总结

热门文章

  1. iterm2 ssh 乱码_iTerm2连接远程-中文乱码问题
  2. 知识点滴 - 无线电通信(P25)的物理信道和逻辑信道
  3. H3C华三交换机开启web服务的方法
  4. 网络营销专业计算机机房考试,中职网络营销期中考试试卷.doc
  5. 文件上传漏洞 — 前端JS绕过、MIME类型绕过
  6. 2018ICPC区域赛徐州站赛后总结(The 2018 ACM-ICPC Asia Xuzhou Regional Contest)
  7. Nodejs学习之路
  8. 在Adobe Illustrator中创建漂亮的冬季场景
  9. 工业智能摄像机的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  10. 移动UI设计-菜单篇