mysql-sql语句中变量的使用
最近工作中用到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语句中变量的使用的更多相关文章
- sql语句中变量的写法
$sql = "update cat set num=num+1 where cat_id=$art[cat_id]"; $sql = "update ca ...
- delphi中写SQL语句中变量的注意事项
1.procedure TForm1.btn1Click(Sender: TObject); var s: String; begin S := 'select * from TMarketI ...
- 在sql语句中添加php变量
在sql语句中使用{}将php变量扩起来,php就会解析{}中的内容. //案件统计 function getCount($dsql,$tableName,$year){ //诉讼案件总数,总金额 $ ...
- sql 语句中定义的变量不能和 sql关键字冲突
sql 语句中定义的变量不能和 sql关键字冲突 from bs_email_account account LEFT JOIN bs_group_info gp ON account.group_i ...
- mysql sql语句大全(转载)
1.说明:创建数据库 CREATE DATABASE database-name 2.说明:删除数据库 drop database dbname 3.说明:备份sql server --- 创建 ...
- mysql sql语句执行时是否使用索引检查方法
在日常开发中,使用到的数据表经常都会有索引,这些索引可能是开发人员/DBA建表时创建的,也可能是在使用过程中新增的.合理的使用索引,可以加快数据库查询速度.然而,在实际开发工作中,会出现有些sql语句 ...
- 自制小工具大大加速MySQL SQL语句优化(附源码)
引言 优化SQL,是DBA常见的工作之一.如何高效.快速地优化一条语句,是每个DBA经常要面对的一个问题.在日常的优化工作中,我发现有很多操作是在优化过程中必不可少的步骤.然而这些步骤重复性的执行,又 ...
- MyBatis 中实现SQL语句中in的操作 (11)
MyBatis 中实现SQL语句中in的操作 概括:应用myBatis实现SQL查询中IN的操作 1.数据库结构及其数据 2.mapper.xml文件 <?xml version="1 ...
- mysql sql语句大全
1.说明:创建数据库 CREATE DATABASE database-name 2.说明:删除数据库 drop database dbname 3.说明:备份sql server --- 创建 备份 ...
- MySQL sql语句总结
1.说明:创建数据库CREATE DATABASE database-name2.说明:删除数据库drop database dbname3.说明:备份sql server--- 创建 备份数据的 d ...
随机推荐
- AJAX异步实现
AJAX 最大的优点是在不重新加载整个页面的情况下,可以与服务器交换数据并更新部分网页内容. <head> <meta charset="utf-8"> & ...
- 用回调函数创建一个XMLHttpRequest,并从一个TXT文件中检索数据。
<script> var xmlhttp; function loadXMLDoc(url,soyo) { if (window.XMLHttpRequest) {// IE7+, Fir ...
- hibernate类或方法---备忘录
- bzoj题目分类
转载于http://blog.csdn.net/creationaugust/article/details/513876231000:A+B 1001:平面图最小割,转对偶图最短路 1002:矩阵树 ...
- 微信小程序之商品发布+编辑功能(多图片上传功能)
小程序的商品发布页面:功能有多图片上传 遇到的问题记录一下:1.uploadFile成功之后返回的参数是json字符串,一定要用JSON.parse转换为object格式 2.因为商品发布和编辑都是在 ...
- 开源矿工README
点击加入 NTMiner官方QQ群: 863725136 开源矿工内置的所有内核均为原版,开源矿工永远不会额外增加矿工支出: 开源矿工永远开源: 开源矿工永远不会去破解国人开发的内核: 下载地址 阿里 ...
- Codeforces 825D 二分贪心
题意:给一个 s 串和 t 串, s 串中有若干问号,问如何填充问号使得 s 串中字母可以组成最多的 t 串.输出填充后的 s 串. 思路:想了下感觉直接怼有点麻烦,要分情况:先处理已经可以组成 t ...
- 六时出行 App 隐私政策
六时出行 App 隐私政策 本应用尊重并保护所有使用服务用户的个人隐私权.为了给您提供更准确.更有个性化的服务,本应用会按照本隐私权政策的规定使用和披露您的个人信息.但本应用将以高度的勤勉.审慎义 ...
- linux下tomcat启动正常,但是外部浏览器无法访问
这种情况一般是由于系统防火墙设置问题导致的,这次遇到的系统是centos 7.2,防火墙由iptables改成了firewall,因此停止防火墙的命令应该是: systemctl disable fi ...
- 神经网络图灵机(Neural Turing Machines, NTM)
近期,Google Deep Mind团队提出了一个机器学习模型,并起了一个特别高大上的名字:神经网络图灵机,我为大家翻译了这篇文章,翻译得不是特别好,有些语句没读明白,欢迎大家批评指正 原论文出处 ...