我得到了下表。它实际上由用户和权限以及连接关系表(用户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
有关如何实现这一目标的任何提示?
答案 0 :(得分:1)
您可以将MAX()
聚合函数与GROUP BY
一样使用
select `user`, max(permission_a) as permission_a,
max(permission_b) as permission_b
from permission
group by `user`;