Php MYSQL按2行排序,具体取决于其他2行ID

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 ---|------------|--

我正在尝试创建一个查询,允许我选择如下所示的数据 按角色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
---|------------|------------|-----------|-----------------|---------------
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