我试图创建一个查询,允许我选择如下所示的数据
按角色45组织并按顺序显示其获胜率。
例如champ_1=45和champ_2=36,但有时可以是champ_1=36和champ_2=45。当这样的时候,我将如何进行查询,以便根据champ1或champ2排序champ45的获胜率,然后将其组织为desc。

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

最佳答案

按顺序使用case语句

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

关于php - MYSQL按2行排序,具体取决于其他2行IDS,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45268640/

10-13 22:11