У меня есть эта таблица пользователей: (Я хочу обновить рейтинг на основе оценки)
Вот SQL Fiddle:
http://sqlfiddle.com/#!9/2f459d/1/0
Такжеобзор кода:
create table users2 (
ranking int ,
user_id int auto_increment primary key,
user_n varchar(70) charset utf8mb4 not null comment 'username',
score int default '0' null,
constraint username
unique (user_n) );
Со значениями:
INSERT INTO users2 (user_id, user_n, score)
value(1,'mohamad',50),
(2,'john',100),
(3,'nik',150),
(4,'sara',200),
(5,'tom',250);
Я хочу обновить рейтинг на основе оценки.Я могу выбрать, но не могу обновить это:
SELECT c.u_rank,a.user_id,a.user_n,score from users2 a LEFT JOIN (SELECT @s:=@s+1 u_rank,user_id
FROM users2 d,(SELECT @s:=0) as b order by d.score DESC ) AS c
ON a.user_id = c.user_id order by score DESC
Мои усилия на данный момент:
UPDATE users2 a LEFT JOIN (SELECT @s:=@s+1 u_rank,user_id
FROM users2 ,(SELECT @s:=0) as b ORDER BY score DESC ) AS c
ON a.user_id = c.user_id SET a.ranking = c.u_rank