Postgresql - 分组和在哪里

时间:2017-05-27 01:12:48

标签: sql 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,则打印NULL(参见:第41行)。

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

如何?提前致谢

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

1 个答案:

答案 0 :(得分:0)

这会给你这个。

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

SQL FIddle Demo

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;
相关问题