mysql-sql语句中变量的使用
来源:互联网 发布:飞利浦电视机安装软件 编辑:程序博客网 时间:2024/05/21 06:54
最近工作中用到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语句中变量的使用
- Mysql中SQL语句的强化使用
- 关于javaweb中sql语句中使用变量的情况
- SQL SERVER CE中 查询语句变量的使用
- sql语句中使用字符串行变量的问题
- SQL语句中使用VB控件的属性或变量
- QT mysql语句中使用变量的方法
- Sql语句中使用自定义变量
- Sql 语句中执行 定义变量的SQL语句
- sql中执行变量语句的内容
- MySQL中使用SQL语句查看某个表的编码
- MySQL数据库中SQL语句的基本使用(一)
- MySQL数据库中SQL语句的基本使用(二)
- MySQL数据库中SQL语句的基本使用(三)
- 关于怎么在php中定义的sql语句中使用变量
- MySQL中变量的使用
- Qt关于操作mysql的语句中使用变量,如何使用
- JS面向(基于)对象编程笔记
- 70、集合工具类-Collections
- PLSQL Developer V9 注册码
- 页面跳转带参数及获取参数
- shiro+mybatis+springmvc实例记录(一)
- mysql-sql语句中变量的使用
- Java 中public static void main(String []args){}的含义
- maven 3.5 中 toolchains.xml 使用
- linux reboot 实现流程
- Xcode中删除一整行代码的快捷键设置
- GRASP----(职责分配原则)
- Android应用程序从Launcher启动流程
- SpringBoot 入门级学习系列 | 第一篇 为什么选择spring boot?
- Lua学习笔记3-局部变量