gpt4 book ai didi

mysql排序和排名语句

转载 作者:行者123 更新时间:2023-11-29 06:15:05 25 4
gpt4 key购买 nike

我需要一些关于 mysql 语句的帮助我的表 1 有 7 列,表 2 有 8 列,额外的列名为排名,我的语句应该是这样的从表 1 中选择所有内容,然后按“用户数”排序,将其插入到表 2 中,并从 1 2 3 开始排名,

table 1 : 
username | email | number of users
jack a@a.com 75
ralf b@b.com 200
anne c@c.com 12
sonny d@d.com 300

======================================

这里我需要根据用户数量进行插入和排名

table 2 

ranking | username | email | number of users
1
2
3

最佳答案

我会避免使用另一张 table 。单个查询就足够了。

create table mytable (
id int not null auto_increment primary key,
username varchar(50),
email varchar(50),
number int
) engine = myisam;

insert into mytable (username,email,number)
values
('a','aaa',10),
('b','bbb',30),
('c','ccc',50),
('d','ddd',30),
('e','eee',20),
('f','fff',45),
('g','ggg',20);

select @r:=@r+1 as rnk,username,email,number
from mytable,(select @r:=0) as r order by number desc

+------+----------+-------+--------+
| rnk | username | email | number |
+------+----------+-------+--------+
| 1 | c | ccc | 50 |
| 2 | f | fff | 45 |
| 3 | b | bbb | 30 |
| 4 | d | ddd | 30 |
| 5 | e | eee | 20 |
| 6 | g | ggg | 20 |
| 7 | a | aaa | 10 |
+------+----------+-------+--------+
7 rows in set (0.00 sec)

这是一个考虑关系的更智能版本

select @r:=@r + 1 as rn, username,email,
@pos:= if(@previous<>number,@r,@pos) as position,
@previous:=number as num
from mytable,(select @r:=0,@pos:=0,@previuos:=0) as t order by number desc

+------+----------+-------+----------+--------+
| rn | username | email | position | num |
+------+----------+-------+----------+--------+
| 1 | c | ccc | 1 | 50 |
| 2 | f | fff | 2 | 45 |
| 3 | b | bbb | 3 | 30 |
| 4 | d | ddd | 3 | 30 |
| 5 | e | eee | 5 | 20 |
| 6 | g | ggg | 5 | 20 |
| 7 | a | aaa | 7 | 10 |
+------+----------+-------+----------+--------+
7 rows in set (0.00 sec)

关于mysql排序和排名语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7056895/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com