1. mysql的@用法
  2. 实战
  3. select @a;

变量名,如果你不加的话,会认为这是一个列名,但是这列不存在,就报错了;

  1. @变量名 : 定义一个用户变量.
  2. = 对该用户变量进行赋值.

用户变量赋值有两种方式: 一种是直接用"=“号,另一种是用”:=“号。

其区别在于:

  1. 使用set命令对用户变量进行赋值时,两种方式都可以使用;
  2. 用select语句时,只能用”:=“方式,因为select语句中,”="号被看作是比较操作符。

(@i:=@i+1)

可以在生成查询结果表的时候生成一组递增的序列号

select (@i:=@i+5) as rownum, surname, personal_name from student, (select @i:=100) as init;

select @ids := 101,@l := 0

GROUP_CONCAT + group by

按照分组,连接字段上的数据,默认以,,也可以指定分割符

mysql的@用法

1,增加临时表,实现变量的自增

SELECT (@i:=@i+1),t.* FROM table_name t,(SELECT @i:=0) AS j

(@i:=@i+1)代表定义一个变量,每次叠加1;
(SELECT @i:=0) AS j 代表建立一个临时表,j是随便取的表名,但别名一定要的。

2,实现排序递增

SELECT( @i := @i + 1 ),p.*
FROM( SELECT * FROM sys_region ORDER BY create_time DESC ) p, ( SELECT @i := 0 ) k

3,实现分组递增

SELECT@r := CASE WHEN @type = a.LEVEL THEN@r + 1 ELSE1 END AS rowNum,@type := a.`level` AS type,a.id
FROMsys_region a,( SELECT @r := 0, @type := '' ) b;

这里用了临时变量@type,因为对临时变量操作的时候,被使用的变量都是临时变量。

实战

INSERT INTO t_top ( col_account, col_date, p_account, p_name )SELECT b.col_account, b.col_date, b.p_account, b.p_name FROM
(SELECT@num := CASE WHEN @account = a.col_account THEN@num + 1 ELSE1 END AS rownum,@account := a.col_account AS account,a.* FROM( SELECT * FROM zb_top  ORDER BY col_account, p_avg DESC ) a,( SELECT @num := 0, @account := '' ) j
) b where 6 > b.rownum

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

初始化数据:
代码示例:

CREATE TABLE `pd` (`imei` varchar(32) NOT NULL DEFAULT '',`date` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;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
(SELECTimei user_id,max(max_dd),max(max_dd_2),to_days(max(max_dd)) - to_days(max(max_dd_2)) days FROM(SELECTimei,max_dd,max_dd_2 FROM(SELECTtmp.imei,tmp.date,IF(@imei = tmp.imei, @rank := @rank + 1, @rank := 1) AS ranks,IF(@rank = 1, @max_d := tmp.date, @max_d := NULL) AS max_dd,IF(@rank = 2, @max_d_2 := tmp.date, @max_d_2 := NULL) AS max_dd_2,@imei := tmp.imei FROM(SELECT imei, date FROM pd ORDER BY imei ASC, date DESC) tmp,(SELECT @rownum := 0, @imei := NULL, @rank := 0, @max_d := NULL, @max_d_2 := NULL) a ) result ) t GROUP BYimei HAVINGcount(*) > 1
) x WHERE x.days >= 1 AND EXISTS (SELECT 'x' FROM pd WHERE date > '2013-07-26 00:00:00')

注意:

表数据量较大时,使用union all等操作将会有悲剧性的结果。

mysql @的使用相关推荐

  1. mysql 快捷查询数据库各表占用空间,mysql查看索引占用空间,mysql查看数据占用空间

    先贴一张图! 第一步,"很重要" 在mysql中,有一个创建之初自带的库information_schema,这个库中包含着数据库相关信息,查询数据占用空间就是使用该库,所以首先进 ...

  2. mysql并发更新数据,多用户并发修改数据解决方案。

    mysql并发更新数据,多用户并发修改数据解决方案. 在系统中,有一些如余额.资产.积分的数据,是要保证数据一致性的.如,一个人使用两个设备同时进行消费操作,如何保证数据一致性的问题. 我们一起来思考 ...

  3. mysql查询字段大小写结果相同,mysql大小写查询不敏感,mysql5.7查询不区分大小写解决方案。

    下面有两条sql,主键查询,在mysql中查询到的结果相同. SELECT* FROM USER WHEREid = 'EM58hdK4nXC';SELECT* FROM USER WHEREid = ...

  4. 数据库中自定义排序规则,Mysql中自定义字段排序规则,Oracle中自定义字段排序规则,decode函数的用法,field函数的用法

    数据库中自定义排序 场景:有一张banner表,表中有一个status字段,有0, 1, 2三个状态位,我想要 1,0,2的自定义排序(这里是重点),然后再进行之上对sequence字段进行二次排序( ...

  5. mybatis查询报错:com.mysql.cj.exceptions.DataConversionException: Cannot determine value type from string

    mybatis查询报错: com.mysql.cj.exceptions.DataConversionException: Cannot determine value type from strin ...

  6. docker一步安装mysql,docker的魅力就在于此

    正常来说,使用docker安装东西的步骤是serach它有没有,然后pull它 这里其实只要一步(如果你没有安装过.没有端口占用等问题的话!!) $ docker run -d -p 3306:330 ...

  7. 设置腾讯云linux服务器中 MySQL 允许远程访问

    申请了一台linux腾讯云服务器,想要把数据库搭建在上面,本地的Windows直接可以访问 以下就是具体的操作流程,首先你需要安装好一个mysql,安装方法–>mysql安装(Linux) 接着 ...

  8. Linux安装mysql,一步到位!

    今天在腾讯云上面买了一个服务器,想要把自己的项目部署一下,就要安装mysql,以下是我的安装步骤,在网上有很多人把install敲错了,还有的少-get,种种错误试完之后,我决定发一篇 sudo ap ...

  9. Mysql函数group_concat、find_in_set 多值分隔字符字段进行数据库字段值翻译

    Mysql函数group_concat.find_in_set进行数据库字段值翻译 场景 配方表:记录包含的原料 sources表示原料,字段值之间用逗号分隔 原料表:对应原料id和原料名称 现需要查 ...

  10. 浅谈MySQL存储引擎-InnoDBMyISAM

    浅谈MySQL存储引擎-InnoDB&MyISAM 存储引擎在MySQL的逻辑架构中位于第三层,负责MySQL中的数据的存储和提取.MySQL存储引擎有很多,不同的存储引擎保存数据和索引的方式 ...

最新文章

  1. C++调用matlab char16_t 重复定义
  2. java学习与总结:索引
  3. 15道使用频率极高的基础算法题
  4. 单例-单例设计模式代码实现
  5. [原]第一次遭遇Oracle的Bug,纪念一下 |ORA-00600 kmgs_pre_process_request_6|
  6. 设计代码说明什么是多态性?如何实现多态?(代码中要写注释解释)_狗屎一样的代码!快,重构我...
  7. 安全是一个系统问题包括服务器安全,信息安全技术题库:除了应用程序功能,Web内容和功能枚举还需要关注( )。...
  8. 【hibernate框架】各种问题用注解Annotation和mxl配置的解决
  9. App Store中国区下架近5万款未提供版号的游戏;微软源代码遭黑客访问;Rust 1.49.0发布
  10. C语言小程序显示心形,如何用vc6.0编出来一个心形
  11. 虚拟均衡器:Producers Vault Baby Bass for Mac
  12. python通信工程定额_版通信工程费用及定额套用解读
  13. Excel中度分秒格式(dd°mm′ss″)与十进制度(°)格式互转,角度与弧度互转
  14. 运放自激震荡的大杂烩总结
  15. Vue中利用moment.js(时间格式化插件)做一个倒计时组件
  16. TortoiseGit 局域网版本库的创建方法
  17. Java代码生成图片验证码实现
  18. GOOGLE搜索秘籍
  19. 【网络入门】详解常用的基础网络知识(面试笔试常考内容)
  20. FX2LP cy7c68013——Slave FIFO 与FPGA通信

热门文章

  1. 卸载计算机更新程序包,Win7清除Win10更新安装包的方法
  2. 机器学习模型 知乎_深度剖析知乎目前的内容架构模型
  3. html5炫酷作品源代码,8个超炫酷的HTML5动画演示及源码
  4. android跌倒检测,基于Android手机的老人跌倒检测方法的研究与设计
  5. 计算机网络与信息安全教育部重点实验室(西安电子科技大学),西安电子科技大学信息安全介绍...
  6. 手机电子邮件用outlook登录
  7. 手写sqrt 牛顿迭代法
  8. 年轻人沉迷“酒店沉浸式度假”,景区该如何与酒店“争宠”?
  9. 2019年中国在线酒店预订行业发展分析报告
  10. SEO做反链不能太刻意,自然合理规律的发布自己的网站