如何通过检查MySQL中的多个运动列来检索喜欢的运动名称?

时间:2017-07-23 23:23:47

标签: mysql

我有多个列,其中包含一项运动名称和一个FLOAT值,该值作为一个人喜欢这项运动的百分比。

例如,

  

表:喜欢

Field A: Soccer (94.27 %) 
Field B: Football (64.21 %)
Field C: Baseball (1.52 %)

我想在字段中搜索最高百分比,然后返回最喜欢的运动的名称。在这种情况下,它将返回足球'

我有以下MySQL脚本检索最高百分比。

-- Get favorite sport  (soccer, 94.2716%)
SELECT GREATEST(likes_soccer, likes_football, likes_baseball, likes_basketball, likes_gymnastics, 
    likes_volleyball, likes_running, likes_swimming, likes_karate, likes_biking, likes_wrestling, likes_golf) AS FAVORITE_SPORT
FROM likes l
WHERE l.child_id = 32;

但是,这并不是我想要的。但它输出足球的比例为94.27%,这是最高的百分比。但是,我希望这可以返回足球'以及其他任何体育项目的字符串表示。我怎么能做到这一点?

1 个答案:

答案 0 :(得分:0)

以下解决了这个问题:

SELECT @var_max_val:= GREATEST(col1, col2, col3, ...) AS max_value,
       CASE @var_max_val WHEN col1 THEN 'col1'
                         WHEN col2 THEN 'col2'
                         ...
       END AS max_value_column_name
FROM table_name
WHERE ...

来源: Greatest value of multiple columns with column name?