MySQL按字符串分组并按特定顺序选择

时间:2016-09-09 21:15:30

标签: mysql group-by

我得到了下表。它实际上由用户和权限以及连接关系表(用户n:n组)组成。

user | permission_a | permission_b
1    | r            | rw
1    | none         | r
2    | rw           | none
3    | none         | rw
3    | r            | rw
3    | none         | none

您可能会看到权限列可以包含rw,r和none。这也是这些值的顺序,这意味着rw实际上比r强,并且r比没有强:rw> r>无。

现在,我想按用户(id)进行分组并显示他们最强的"权限。

所以结果应该是这样的:

user | permission_a | permission_b
1    | r            | rw
2    | rw           | none
3    | r            | rw

有关如何实现这一目标的任何提示?

1 个答案:

答案 0 :(得分:1)

您可以将MAX()聚合函数与GROUP BY一样使用

select `user`, max(permission_a) as permission_a,
max(permission_b) as permission_b
from permission
group by `user`;