我有一张这样的桌子:
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)
。
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] 删除。
我来说两句