对不起,如果我的questin很简单,但我花了一天时间用谷歌搜索仍然无法弄清楚如何解决这个问题:
我有这样的表:
userId A B C D E
1 5 0 2 3 2
2 3 2 0 7 3
Run Code Online (Sandbox Code Playgroud)
我需要每行每列MAX列名:
userId MAX
1 A
2 D
Run Code Online (Sandbox Code Playgroud)
所有的想法将不胜感激!谢谢!我使用谷歌大查询,所以我的理解可能与MySQL不同,但如果你有MySQL的想法,我会尝试翻译.
你可以使用GREATEST:
SELECT userid, CASE GREATEST(A,B,C,D,E)
WHEN A THEN 'A'
WHEN B THEN 'B'
WHEN C THEN 'C'
WHEN D THEN 'D'
WHEN E THEN 'E'
END AS MAX
FROM TableName
Run Code Online (Sandbox Code Playgroud)
结果:
userId MAX
1 A
2 D
Run Code Online (Sandbox Code Playgroud)
使用示例表,它看起来像:
SELECT userid, CASE GREATEST(A,B,C,D,E)
WHEN A THEN 'A'
WHEN B THEN 'B'
WHEN C THEN 'C'
WHEN D THEN 'D'
WHEN E THEN 'E'
END AS MAX
from (select 1 as userId, 5 as A, 0 as B, 2 as C, 3 as D, 2 as E),
(select 2 as userId, 3 as A, 2 as B, 0 as C, 7 as D, 3 as E)
Run Code Online (Sandbox Code Playgroud)