MySQL使用用户变量更新分组排序

第一个需求是根据A字段进行排序,排序结果更新到B字段

简单搜索之后,很快得到答案

http://dev.mysql.com/doc/refman/5.7/en/update.html

SET @a=0;
UPDATE tableName SET a = ( SELECT @a := @a +1 )  ORDER BY b ASC

第二个需求是根据A字段分组,对B字段排序,排序结果更新到C字段

SET @C = 0;SET @A = 0;
UPDATE tableName
SET C =
(
SELECT
CASE WHEN @A = A
THEN @C := @C + 1
ELSE
     (@C := @C + 1 AND @A := A)
END
)
ORDER BY A,B

结果是正确了,但是不太明白为什么……

To be continue

时间: 2024-10-11 12:34:34

MySQL使用用户变量更新分组排序的相关文章

mysql查询语句中用户变量的使用

先上代码吧 SELECT `notice`.`id` , `notice`.`fid` , `notice`.`has_read` , `notice`.`notice_time` , `notice`.`read_time` , `f`.`fnum` , `f`.`forg` , `f`.`fdst` , `f`.`actual_parking` AS `parking` , `f`.`scheduled_deptime` , `f`.`estimated_deptime` , `f`.`ac

mysql实现分组排序

群里有童鞋问,想要根据用户分组,以该用户的下单时间为降序,提取所有用户的第二个订单信息. 这属于分组排序,在Oracle有内置函数可以实现,而在mysql,做起来比较蛋疼. 我提供一种方法供参考 CREATE TABLE user_orders (orders_id INT UNSIGNED NOT NULL, user_id INT UNSIGNED NOT NULL, add_time INT UNSIGNED NOT NULL, PRIMARY KEY(orders_id), KEY(us

MySQL高级分组排序

想要根据用户分组,以该用户的下单时间为降序,提取所有用户的第二个订单信息.这属于分组排序,在Oracle有内置函数可以实现,而在mysql就有点麻烦: CREATE TABLE user_orders (orders_id INT UNSIGNED NOT NULL, user_id INT UNSIGNED NOT NULL, add_time INT UNSIGNED NOT NULL, PRIMARY KEY(orders_id), KEY(user_id), KEY(add_time)

MySql 分组排序取时间最大的一条记录

SELECT A.* FROM digital_asset A, (SELECT name, max(last_updated) max_day FROM digital_asset GROUP BY name) B WHERE A.name = B.name AND A.last_updated = B.max_day SELECT A . * FROM bbs_threads A, ( SELECT digest, max( dateline ) max_dateline FROM bbs_

MySQL - 用户变量

MySQL用户变量:基于会话变量实现的,可以暂存值,并传递给同一连接里的下一条sql使用的变量,当客户端连接退出时,变量会被释放. MySQL用户变量应用场景:同一连接,未关闭情况下,帮你暂存一些计算结果. 两种方式定义用户变量: 1. "=" 如 set @a = 3 , @a: = 5 2. ":=" select常常这样使用. 总结:使用select和set设置变量的区别,set可以使用以上两种形式设置变量,而select只能使用":="的

实战:判断mysql中当前用户的连接数-分组筛选

#connets.sh #!/bin/sh #[email protected] #根据输入参数u或d来显示出对应的用户名或数据库名中用户的连接数. #也可以输入u 具体用户名或d 具体数据库名做进一步的分组筛选 #set mysql evn MYSQL_USER=system  #mysql的用户名 MYSQL_PASS='password'  #mysql的登录用户密码 MYSQL_HOST=192.168.2.188 export black='\033[0m' export boldbl

mysql基础 自定义变量--用户变量,--局部变量

mysql基础 自定义变量--用户变量,--局部变量 原文地址:https://www.cnblogs.com/angdh/p/12190064.html

mysql创建用户两次授权

mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'localhost'     ->     IDENTIFIED BY 'some_pass' WITH GRANT OPTION; mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'%'     ->     IDENTIFIED BY 'some_pass' WITH GRANT OPTION; mysql> GRANT RELOAD,

mysql新建用户本地无法登录

mysql新建用户本地无法登录 MySQLDebianGoogleAccess 出此是用mysql,因为root权限过高,所以新建一用户appadmin,权限仅为要用到的数据库.创建语句如下:grant select,insert,update,delete on test.* to [email protected]"%" identified by "password";其中@“%”是可以在任何地址登录. 创建后到mysql.user下查看,有该用户.但是使用m