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


    本文介绍下,在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

  • 相关阅读:
    Spring依赖注入的方式、类型、Bean的作用域、自动注入、在Spring配置文件中引入属性文件
    RESTful风格、异常处理、Spring框架
    文件上传、数据校验(后台)、拦截器
    接收的参数为日期类型、controller控制层进行数据保存、进行重定向跳转
    SpringMVC入门Demo
    Mybatis入门Demo(单表的增删改查)
    Spring
    spring的exception
    restful风格
    Java后台验证
  • 原文地址:https://www.cnblogs.com/linuxnotes/p/3329528.html
Copyright © 2020-2023  润新知