我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MySQL中符号@的作用

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MySQL中符号@的作用

select @a;

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

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

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

其区别在于:

  • 使用set命令对用户变量进行赋值时,两种方式都可以使用;
  • 用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 
		ELSE 
			1 
		END AS rowNum,
	@type := a.`level` AS type,
	a.id 
FROM
	sys_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 
			ELSE 
				1 
			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
(
	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.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 BY
		imei 
	HAVING
		count(*) > 1 
) x WHERE x.days >= 1 AND EXISTS (SELECT 'x' FROM pd WHERE date > '2013-07-26 00:00:00')

在这里插入图片描述

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

到此这篇关于MySQL中符号@的作用的文章就介绍到这了,更多相关MySQL 符号@内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

MySQL中符号@的作用

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

MySQL中符号@的作用

目录mysql的@用法实战select @a;变量名,如果你不加的话,会认为这是一个列名,但是这列不存在,就报错了;@变量名 : 定义一个用户变量.= 对该用户变量进行赋值.用户变量赋值有两种方式: 一种是直接用"=“号,
2022-06-27

python中的@符号的作用

'@'符号用作函数修饰符是python2.4新增加的功能,修饰符必须出现在函数定义前一行,不允许和函数定义在同一行。也就是说@A def f(): 是非法的。只可以在模块或类定义层内对函数进行修饰,不允许修修饰一个类。一个修饰符就是一个函数
2023-01-31

Java中::符号的作用是什么

本篇内容主要讲解“Java中::符号的作用是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java中::符号的作用是什么”吧!1. 前言Java中的方法引用,很多同学都见过但却叫不出名字,在
2023-06-16

Mysql中@和@@符号怎么使用

本篇内容主要讲解“Mysql中@和@@符号怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Mysql中@和@@符号怎么使用”吧!一、概述@是用户变量,@@是系统变量。select @a;变
2023-06-30

Java中相等符号的作用是什么

在Java中,相等符号(==)用于比较两个变量的值是否相等。它的作用是判断两个变量的值是否相等,并返回一个布尔值(true或false)。相等符号可以用于比较基本数据类型(如整数、浮点数、字符等)以及引用数据类型(如对象、数组等)的值。需要
2023-09-15

PHP中引用符号(&)的作用是什么

本篇文章给大家分享的是有关PHP中引用符号(&)的作用是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。按位与$a & $b 将把 $a 和 $b 中都为1的位设为1.奇偶数
2023-06-15

C++中如何使用逗号操作符

C++中如何使用逗号操作符,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。其实,我们是经常会用到逗号操作符的,但是并不是所有代码里出现的逗号都是逗号操作符。让我们先从一个类的示例
2023-06-17

mysql中UNION操作符的作用是什么

本篇文章给大家分享的是有关mysql中UNION操作符的作用是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。mysql中UNION操作符是什么?MySQL UNION 操作
2023-06-14

PHP 中的问号符号

在 PHP 中,问号 ? 运算符称为三元运算符或条件三元运算符。本文将深入探讨 PHP 中的三元运算符。PHP 中三元运算符简介三元运算符是其中一种,因为它只需要三个操作数。第一个操作数是要计算的表达式。通常,比较参数。它返回一个布尔值。第
PHP 中的问号符号
2024-02-27

哪个标点符号可以用作 MySQL 日期部分之间的分隔符?

在这件事上,MySQL 允许我们使用迄今为止宽松的格式。我们可以在日期部分之间使用任何标点符号作为分隔符。一些示例如下 -mysql> Select date (2016/10/20);+---------------------+|
2023-10-22

哪个标点符号可以用作 MySQL 时间部分之间的分隔符?

与日期值的情况一样,MySQL 也允许我们使用宽松的时间格式。我们可以在时间部分之间使用任何标点符号作为分隔符。一些示例如下 -mysql> Select timestamp(2017-10-20 04+05+36);+---------
2023-10-22

MySQL 中 bigint、int、mediumint、smallint、tinyint 有符号和无符号的取值范围

想要了解取值范围首先需要知道的是 bit 和 Byte 的概念bit :位二进制数系统中,位通常简写为 "b",也称为比特,每个二进制数字 0 或 1 就是一个位(bit)。位是表示信息的最小单位,其中 8 bit 就称为一个字节(Byte)。 Byte :字
MySQL 中 bigint、int、mediumint、smallint、tinyint 有符号和无符号的取值范围
2021-01-20

Python中的符号

1.算数运算符2.复合赋值运算符3.常用的格式符号
2023-01-31

MySQL的帐号操作

MySQL的帐号操作一 查看所有用户在mysql的user表中存储了MySQL的用户信息主要字段:Host表示允许访问的主机User表示用户名authentication_string表示加密后的密码desc user; # 查看用户信息二 创建用户和授权#
MySQL的帐号操作
2021-11-01

PHP中的符号如何使用

这篇文章主要讲解了“PHP中的符号如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PHP中的符号如何使用”吧!变量符号在PHP中变量名前需要用$符号,如下所示:$variableNam
2023-07-05

编程热搜

目录