搜索
简帛阁>技术文章>SQL的自定义变量用法(适用于navicat对接的mysql)

SQL的自定义变量用法(适用于navicat对接的mysql)

标题SQL的自定义变量用法(适用于navicat对接的mysql

** 注意SET @变量 用法只支持原生mysql,因为navicat链接的mysql不支持回传服务器,如果一定要用,可以使用python+pymysql注入sql语句**

基本用法:

直接定义一列值

SELECT @x := 1, @y := 2

sql自定义变量

循环递增

此种用法可以在mysql中进行模拟排序,原理是:新定义一个变量列,强制链接到查询的表中,再查询时定义的变量不断让自己+1递增即可,这里+任何数都可以,可以根据实际情况做很多变化性操作。

SELECT
	@x := @x+1,
	amount
FROM 2019order
INNER JOIN (SELECT @x := 0) as tb1 ON 1=1

MySQL自定义变量递增

统一传入参数

对于复杂的sql查询,可能需要在各种连表或子查询中传入相同参数,参数可能需要调节,此时可以通自定义变量一次传入,比如下面这次RFM模型数据查询,最后一次传入@date参数

SELECT
	R.user_id,
	R.Rencency,
	F.Frequency,
	M.Monetary 
FROM
	(
	SELECT
		user_id,
		DATEDIFF( R1.Rencency, @date ) AS Rencency 
	FROM
		(
		SELECT
			user_id,
			MAX( create_time ) AS Rencency 
		FROM
			`order` 
		WHERE
			`status` = 2 
			AND platform_id IN { platformid } 
			AND create_time BETWEEN DATE_SUB( @date, INTERVAL 365 DAY ) AND @date 
		GROUP BY
			user_id 
		ORDER BY
			Rencency DESC 
		) AS R1 
	) AS R
	LEFT JOIN (
	SELECT
		user_id,
		F1.Frequency 
	FROM
		(
		SELECT
			user_id,
			COUNT(
			DISTINCT LEFT ( create_time, 7 )) AS Frequency 
		FROM
			`order` 
		WHERE
			`status` = 2 
			AND platform_id IN { platformid } 
			AND create_time BETWEEN DATE_SUB( @date, INTERVAL 365 DAY ) AND @date 
		GROUP BY
			user_id 
		ORDER BY
			Frequency 
		) AS F1 
	) AS F ON R.user_id = F.user_id
	LEFT JOIN (
	SELECT
		user_id,
		M1.Monetary 
	FROM
		(
		SELECT
			user_id,
			SUM( original_price / 100 ) AS Monetary 
		FROM
			`order` 
		WHERE
			`status` = 2 
			AND platform_id IN { platformid } 
			AND create_time BETWEEN DATE_SUB( @date, INTERVAL 365 DAY ) AND @date 
		GROUP BY
			user_id 
		ORDER BY
			Monetary 
		) AS M1 
	) AS M ON R.user_id = M.user_id
	INNER JOIN ( SELECT @date := '{date}' ) AS date_x ON 1 =1
标题SQL自定义变量用法适用于navicat对接mysql**注意SET@变量用法只支持原生mysql,因为navicat链接mysql不支持回传服务器,如果一定要用,可以使用python
1sql文件导入参考:https://blogcsdnnet/itas109/article/details/41979311?utm_sourceblogxgwz0https://blogcsdn
阅读目录一、NavicatPremium12简介与使用:二、pymysql模块使用:查:增删改三、sql注入问题产生与解决方法:本文内容提要:NavicatPremium12介绍、使用。pymys
Navicat是一套快速、可靠并价格相当便宜数据库管理工具,专为简化数据库管理及降低系统管理成本而设。它设计符合数据库管理员、开发人员及中小企业需要。Navicat是以直觉化图形用户界面而建
文实例讲述了C适用于like语句SQL格式化函数,分享给大家供大家参考。具体实现代码如下:代码如下:///<summary>///对字符串进行sql格式化,并且符合like查询格式。
用户变量介绍:用户变量即用户自己定义变量,我们可以给用户变量分配值,并且可用在任何可以正常使用标量表达式地方引入用户变量之前我们必须使用set语句或select语句来定义它,然后为它赋一个值,否则
例如:我现在要同时执行这么多语句updatecommunitysetxqmcreplace(xqmc,'','');updatecommunitysetxqbmreplace(xqbm,'','');
Message:MySQLserverhasgoneaway原因可能是sql语句过长,超过mysql通信缓存区最大长度;调整mysql配置文件中max_allowed_packet编辑mysqlini
一、新建查询二、编写sql语句并保存1保存到内部1Ctrl+s保存当前查询文件2下次打开可点击查询点击上次保存查询文件名打开上次查询文件2保存到外部1默认保存至C:\Users\Administr
关于SQLSERVER9003错误解决方法只适用于SQL2000:"无法打开新数据库'POS'。CREATEDATABASE中止。(MicrosoftSQLServer,错误:9003)"看是9003