Mysql >varchar(5)不为空,键战斗机id(战斗机id)引擎=MyISAM默认字符集=utf8@GregRozmarynowycz按顺序显示结果的选项在哪里?,我得到的是,如果你从fa_排名中选择*,顺序将与你在帖子中的顺序相同?我应该提到,底部的表格是我

Mysql >varchar(5)不为空,键战斗机id(战斗机id)引擎=MyISAM默认字符集=utf8@GregRozmarynowycz按顺序显示结果的选项在哪里?,我得到的是,如果你从fa_排名中选择*,顺序将与你在帖子中的顺序相同?我应该提到,底部的表格是我,mysql,join,Mysql,Join,>varchar(5)不为空,键战斗机id(战斗机id)引擎=MyISAM默认字符集=utf8@GregRozmarynowycz按顺序显示结果的选项在哪里?,我得到的是,如果你从fa_排名中选择*,顺序将与你在帖子中的顺序相同?我应该提到,底部的表格是我从一个选择查询中得到的,在我运行这个查询后,它按排名排序(并选择分数);一些在他们的分区中得分最高的战士排在15或20位,一些得分为0的战士排在1位。也没有关于除法或除法的索引score@GregRozmarynowycz您能否执行show c


>varchar(5)不为空,键
战斗机id
战斗机id
)引擎=MyISAM默认字符集=utf8@GregRozmarynowycz按顺序显示结果的选项在哪里?,我得到的是,如果你从fa_排名中选择*,顺序将与你在帖子中的顺序相同?我应该提到,底部的表格是我从一个选择查询中得到的,在我运行这个查询后,它按排名排序(并选择分数);一些在他们的分区中得分最高的战士排在15或20位,一些得分为0的战士排在1位。也没有关于除法或除法的索引score@GregRozmarynowycz您能否执行
show create table tablename
命令并显示它?还可以复制并粘贴查询和结果直接创建表
fa_ranks
fighter_id
varchar(12)不为空,
rank
int(6)不为空,
division
varchar(5)不为空,键
fighter_id
fighter_id
)引擎=MyISAM默认字符集=utf8@GregRozmarynowycz显示结果的选择顺序在哪里?我得到的是,如果你从fa_排名中选择,顺序将与你在帖子中的顺序相同?
INSERT INTO fa_rankings (fighter_id, rank, division)
SELECT 
    fa_scores.fighter_id,
    @r := CASE WHEN @div <> f_division THEN 1 ELSE @r+1 END as f_rank,
    @div := f_division
FROM
    (SELECT @div := NULL) d,
    (SELECT @r := 0) r,
    fa_scores
JOIN (SELECT fa_fighters.fighter_id,
        CONCAT(
            IF(status = 'professional', 'a', 'b'),
            CASE
                WHEN weight < 126 THEN 0
                WHEN weight BETWEEN 126 AND 135 THEN 1
                WHEN weight BETWEEN 136 AND 145 THEN 2
                WHEN weight BETWEEN 146 AND 155 THEN 3
                WHEN weight BETWEEN 156 AND 170 THEN 4
                WHEN weight BETWEEN 171 AND 185 THEN 5
                WHEN weight BETWEEN 186 AND 205 THEN 6
                WHEN weight BETWEEN 206 AND 265 THEN 7
                ELSE 8 END) as f_division
    FROM fa_fighters
    ORDER BY f_division ASC) as fighters using (fighter_id)
ORDER BY score DESC
Rankings Table                   Compared with Scores
+------------+------+----------+ +-------+
| fighter_id | rank | division | | score |
+------------+------+----------+ +-------+
| 131        | 1    | a1       | | 0     |
| 23         | 2    | a1       | | 34    |
| 332        | 3    | a1       | | 4     |
| 1233       | 1    | a2       | | 0     |
| 643        | 2    | a2       | | 44    |
+------------+------+----------+ +-------+
SELECT * ,
(SELECT CONCAT_WS(  ' ', f_name, l_name ) FROM fa_fighters WHERE fa_fighters.fighter_id = fa_rankings.fighter_id)
AS name,
(SELECT score FROM fa_scores WHERE fa_scores.fighter_id = fa_rankings.fighter_id) 
AS score
FROM  `fa_rankings` 
WHERE 1 
ORDER BY division, rank ASC 
LIMIT 0 , 30
INSERT INTO fa_rankings (fighter_id, rank, division)
SELECT 
    fa_scores.fighter_id,
    @r := CASE WHEN @div <> f_division THEN 1 ELSE @r+1 END as f_rank,
    @div := f_division
FROM
    (SELECT @div := NULL) d,
    (SELECT @r := 0) r,
    fa_scores
JOIN (SELECT fa_fighters.fighter_id,
        CONCAT(
            IF(status = 'professional', 'a', 'b'),
            CASE
                WHEN weight < 126 THEN 0
                WHEN weight BETWEEN 126 AND 135 THEN '1'
                WHEN weight BETWEEN 136 AND 145 THEN '2'
                WHEN weight BETWEEN 146 AND 155 THEN '3'
                WHEN weight BETWEEN 156 AND 170 THEN '4'
                WHEN weight BETWEEN 171 AND 185 THEN '5'
                WHEN weight BETWEEN 186 AND 205 THEN '6'
                WHEN weight BETWEEN 206 AND 265 THEN '7'
                ELSE '8' END) as f_division
    FROM fa_fighters
    ORDER BY 
        f_division ASC,
        #the score column in the form of a subquery
        (select score from fa_scores where fa_scores.fighter_id = fa_fighters.fighter_id) DESC) 
    as fighters using (fighter_id)