Postgresql - 分组依据和地点

我有一张这样的桌子:

role_menu_id |  role_id     | menu_id | menu_permission_id
38                  1           2           1               
39                  1           2           2
40                  1           2           3
41                  2           4           NULL
42                  1           2           4

我想按 (role_id) 分组,最终结果如下:

role_menu_id |  role_id     | menu_id | menu_permission_id
42                  1           2           4
41                  2           4           NULL

如果 role_id 的 menu_permission_id 为空,则打印 NULL(参见:第 41 行)。

但是,如果 role_id 的 menu_permission_id 不为空,则获取 max(menu_permission_id)

如何?提前致谢

我还没有 SQL 查询,因为很困惑。

乌察夫

这会给你。

注意:如果 2 行有max(menu_permission_id),则查询将返回带有 的行max(role_menu_id)

SQL 小提琴演示

select * From 
(select t.*,
row_Number() over (partition by role_id,menu_id
                   order by role_Menu_id desc) as max_menu
from table1 t) t1
where max_menu=1;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章