mysql分组排名(更新篇)
来源:互联网 发布:淘宝收藏反复确认 编辑:程序博客网 时间:2024/05/12 11:24
排名并更新#########################################################
USE test_db;
建表
CREATE TABLE t_rank_update
(
pid INT(4) PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(20) NOT NULL,
age INT(3),
rank INT,
groupid INT
)
插入
INSERT INTO t_rank_update(NAME, age, rank,groupid)
VALUES
(‘Peter’, 19,0 , 1),
(‘Andre’,20,0 ,1),
(‘Vino’,20,0 ,3),
(‘John’,25, 0,3),
(‘Tom’,24,0 ,4),
(‘Brian’,21,0 ,4),
(‘Andy’,22, 0,3),
(‘George’,23, 0,4),
(‘Dew’,23, 0,4),
(‘Kris’,25, 0,4),
(‘Samual’,25,0,4),
(‘William’,26,0,2);
更新,相同数值系统自动排名(不分组)
SET @rank:=0;
UPDATE t_rank_update,
(
SELECT pid, @rank := @rank + 1 AS ranknum
FROM t_rank_update
ORDER BY age DESC
) tmp
SET t_rank_update.rank=tmp.ranknum
WHERE t_rank_update.pid=tmp.pid
更新,相同数值相同排名(不分组)
SET @rank:=0;
SET @preAge:=0;
UPDATE t_rank_update,
(
SELECT pid, (IF(@preAge <> age, @rank :=@rank + 1, @rank)) ranknum ,@preAge:=age
FROM t_rank_update
ORDER BY age
) tmp
SET t_rank_update.rank=tmp.ranknum
WHERE t_rank_update.pid=tmp.pid
相同数值系统自动排名(分组)
SET @preAge:=0;
SET @row:=0;
SET @curGroup:=0;
UPDATE t_rank_update a
INNER JOIN
(
SELECT pid,NAME,age, groupid,
CASE
WHEN @curGroup=groupid THEN @row := @row + 1
WHEN @curGroup<>groupid THEN @row:=1
END urank,
@curGroup:=groupid,
@preAge:=age
FROM t_rank_update
ORDER BY groupid DESC, age DESC
) b ON a.pid=b.pid
SET a.rank=b.urank;
相同数值相同排名(分组)
SET @preAge:=0;
SET @row:=0;
SET @curGroup:=0;
UPDATE t_rank_update a
INNER JOIN
(
SELECT pid,NAME,age, groupid,
CASE
WHEN @curGroup=groupid THEN @row := IF(@preAge = age, @row, @row := @row + 1)
WHEN @curGroup<>groupid THEN @row:=1
END urank,
@curGroup:=groupid,
@preAge:=age
FROM t_rank_update
ORDER BY groupid DESC, age DESC
) b ON a.pid=b.pid
SET a.rank=b.urank;
- mysql分组排名(更新篇)
- mysql分组取每组前几条记录(排名)
- mysql分组取每组前几条记录(排名)
- mysql分组取每组前几条记录(排名)
- mysql 分数排名,更新表
- mysql排名(查询篇)
- 分组排序分组排名Sql
- sql分组排名
- Oracle分组排名
- Oracle分组排名
- MYSQL查询语句:根据成绩更新全部排名
- mysql分组取每组前几条记录(排名) 附group by与order by的研究
- mysql分组取每组前几条记录(排名) 附group by与order by的研究
- mysql分组取每组前几条记录(排名) 附group by与order by的研究
- mysql分组取每组前几条记录(排名) 附group by与order by的研究
- mysql分组取每组前几条记录(排名) 附group by与order by的研究
- mysql分组取每组前几条记录(排名) 附group by与order by的研究
- sql分组排序‘乐观’排名
- Javaweb之cookie和session
- [置顶] memcached与PHP5.2.3_memcache.dll
- sqoop 的使用
- [置顶] firefox 插件开发中文资料博客索引
- [置顶] 关于SSO的一些讨论
- mysql分组排名(更新篇)
- [置顶] 今年离不开电商系统了
- [置顶] 2012 12306 终于定到票啦 哈哈哈
- Maven 自动部署到Tomcat
- iOS 当前日期并按照固定格式显示出来
- [置顶] 今天是个值得纪念的日子 -- 子辰儿子出来了
- 第十四章 数组作为参数
- [置顶] PHP解决浏览器 下载文件 中文名称乱码问题--兼容大多浏览器
- Python学习之sys.argv