首页 > 数据库 > mysql教程 > mysql实例---sql语句中使用@变量_MySQL

mysql实例---sql语句中使用@变量_MySQL

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
发布: 2016-06-01 13:29:45
原创
1413 人浏览过

bitsCN.com 本文介绍下,在mysql语句中使用@变量的一个例子,学习下这个特殊变量的用法,有需要的朋友参考下吧。要求:

计算用户距上次访问的天数,根据imei号区分不同的用户,如果时间段内只有一次访问则为0。

初始化数据: 
 

复制代码代码示例:

CREATE TABLE `pd` ( 
  `imei` varchar(32) NOT NULL DEFAULT '', 
  `dat` datetime DEFAULT NULL 
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ---------------------------- 
-- Records of pd 
-- www.jbxue.com
-- ---------------------------- 
INSERT INTO `pd` VALUES ('1', '2013-07-25 00:00:01'); 
INSERT INTO `pd` VALUES ('1', '2013-07-26 00:00:02'); 
INSERT INTO `pd` VALUES ('2', '2013-07-23 00:00:04'); 
INSERT INTO `pd` VALUES ('2', '2013-07-26 00:00:03'); 
INSERT INTO `pd` VALUES ('3', '2013-07-26 00:00:01');

脚本,使用@特殊变量: 
 

复制代码代码示例:select * from ( 
    select imei user_id, max(max_dd) , max(max_dd_2), to_days( max(max_dd)) - to_days(max(max_dd_2)) days  from (
        select imei, max_dd, max_dd_2 from ( 
              select tmp.imei, tmp.dates, 
                           if(@imei=tmp.imei, @rank:=@rank+1,@rank:=1) as rank, 
                      if(@rank = 1, @max_d := tmp.dates, @max_d := null) as max_dd, 
                      if(@rank = 2, @max_d_2 := tmp.dates, @max_d_2 := null) as max_dd_2, 
                            @imei:=tmp.imei 
              from (select imei, dates from pb order by imei asc ,dates desc ) tmp , 
                (select @rownum :=0 , @imei := null ,@rank:=0, @max_d :=null, @max_d_2 := null) a 
      ) result 
    ) t 
    group by imei 
    having count(*) > 1 
) x where x.days >= 1 and EXISTS (select 'x' from pb where dates > '2013-07-26 00:00:00')

注意:
表数据量较大时,使用union all等操作将会有悲剧性的结果。
本文原始链接:http://www.jbxue.com/db/11874.html

bitsCN.com
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
打印sql语句
来自于 1970-01-01 08:00:00
0
0
0
mysql - 求SQL语句
来自于 1970-01-01 08:00:00
0
0
0
用tp5框架写sql语句
来自于 1970-01-01 08:00:00
0
0
0
错误位置,SQL语句
来自于 1970-01-01 08:00:00
0
0
0
php - sql语句拼接 报错
来自于 1970-01-01 08:00:00
0
0
0
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板