Php MYSQL按2行排序,具体取决于其他2行ID
我正在尝试创建一个查询,允许我选择如下所示的数据 按角色45组织,并按描述顺序显示其获胜率。 例如champ_1=45和champ_2=36,但有时它可以是champ_1=36和champ_2=45。在这种情况下,我将如何进行查询,以便根据champ1或champ2排序Champ45的获胜率,然后组织它描述Php MYSQL按2行排序,具体取决于其他2行ID,php,mysql,sql,Php,Mysql,Sql,我正在尝试创建一个查询,允许我选择如下所示的数据 按角色45组织,并按描述顺序显示其获胜率。 例如champ_1=45和champ_2=36,但有时它可以是champ_1=36和champ_2=45。在这种情况下,我将如何进行查询,以便根据champ1或champ2排序Champ45的获胜率,然后组织它描述 id Role Champ_1 Champ_2 Champ_1_winrate Champ_2_winrate ---|------------|--
id Role Champ_1 Champ_2 Champ_1_winrate Champ_2_winrate
---|------------|------------|-----------|-----------------|---------------
1 | 1 | 45 | 17 | 0.54 | 0.46
2 | 1 | 67 | 45 | 0.52 | 0.48
5 | 1 | 45 | 27 | 0.59 | 0.41
3 | 1 | 45 | 35 | 0.29 | 0.71
4 | 1 | 45 | 23 | 0.094 | 0.916
6 | 1 | 80 | 45 | 0.38 | 0.62
7 | 1 | 45 | 47 | 0.544 | 0.456
8 | 1 | 32 | 45 | 0.78 | 0.22
应显示以下数据:
id Role Champ_1 Champ_2 winrate
---|------------|------------|-----------|-----------------|
6 | 1 | 80 | 45 | 0.62 |
5 | 1 | 45 | 27 | 0.59 |
7 | 1 | 45 | 47 | 0.544 |
1 | 1 | 45 | 17 | 0.54 |
2 | 1 | 67 | 45 | 0.48 |
3 | 1 | 45 | 35 | 0.29 |
8 | 1 | 32 | 45 | 0.22 |
4 | 1 | 45 | 23 | 0.094 |
我已经尝试了下面的代码,这是我3个多小时来的最接近的代码,请有人帮忙
SELECT *
FROM Bronze_Matchups a
WHERE (Champ_2 = 24 AND Role = 'JUNGLE')
OR (Champ_1 = 24 AND Role = 'JUNGLE')
ORDER BY Champ_2_winrate desc, Champ_1_winrate asc
按顺序使用案例陈述
SELECT *
FROM Bronze_Matchups a
WHERE
(Champ_2 = 24 AND Role = 'JUNGLE')
OR (Champ_1 = 24 AND Role = 'JUNGLE')
ORDER BY
CASE
WHEN Champ_2 = 24 THEN Champ_2_winrate
ELSE Champ_1_winrate
END
您可以使用UNION和ORDERBY(根据需要在ORDERBY子句中添加desc或asc) 看见
SELECT a.id, a.Role, a.Champ_1, a.Champ_2, a.Champ_2_winrate as winrate
FROM Bronze_Matchups a
WHERE a.Champ_2 = 24
AND a.Role = 'JUNGLE'
UNION
SELECT a.id, a.Role, a.Champ_1, a.Champ_2, a.Champ_1_winrate as winrate
FROM Bronze_Matchups a
WHERE a.Champ_1 = 24
AND a.Role = 'JUNGLE'
ORDER BY winrate