0

我真的为此苦苦挣扎了一段时间。我有一个 MySQL 数据库和大量数据。这是我必须为大学创建的公式 1 网站。

现在 j_tracks_rounds_results 表已填满数据,但有一列未填写。这是排名列。

我创建了一个存储过程,如下所示:

DROP PROCEDURE `sp_rank`//
delimiter @@
PROCEDURE `sp_rank`(sid INT)
begin
set @i = 0;

SELECT `performance`, subround_id, @i:=@i+1 as rank
FROM `j_tracks_rounds_results` 
where subround_id = sid
order by `subround_id`,`performance`;

end
delimiter ;

输出如下:

rec.ID PERFORMANCE     SUBROUND_ID RANK
87766 100,349114516829 1           1
93040 101,075635087628 1           2
88851 101,664302543497 1           3

它获得结果并为其广告排名,按性能排序,因此最低性能获得 rank1 等...

我想要实现的是将排名放回表中。就像列“rank”的 ALTER 命令一样。

我怎么能做到这一点?

4

2 回答 2

0

您误用了 SQL 语句。您需要 UPDATE 命令,而不是 ALTER。例如。
UPDATE table SET rank=@i WHERE subround_id=@id

于 2012-01-16T23:20:28.020 回答
0

基本上不要...创建表来保存密钥(rec.id ?)和排名。截断它以摆脱以前的结果,然后将 insert into ... 与您的查询一起使用,然后加入它。

您真的不想在正常运行中更改表,保证有人会在它不存在时使用该列,然后当您查看故障时它将是......

人们只是不寻找在应用程序生命周期中发生变化的表结构,这是一个等待发生的错误。

于 2012-01-16T22:19:28.423 回答