Sql 消除具有特定值的类似行

Sql 消除具有特定值的类似行,sql,oracle11g,analytic-functions,Sql,Oracle11g,Analytic Functions,我有用户表和用户组表。单个用户可以在多个组中。我有两个组管理员和用户。管理员组的组id为1,用户组的组id为2。当我选择连接这两个表时。我想使用两个表之间的联接来选择它: select * from users u join user_groups ug on u.user_id = ug.user_id; 我在每一行得到两次管理员。我想删除组id为用户的管理员的其他行,即在本查询中为1。我如何实现这一点?sqlfiddle是。与组相关的信息位于“所有组”表中。假设您希望保留具有最大组id值的

我有用户表和用户组表。单个用户可以在多个组中。我有两个组管理员和用户。管理员组的组id为1,用户组的组id为2。当我选择连接这两个表时。我想使用两个表之间的联接来选择它:

select * from users u
join user_groups ug
on u.user_id = ug.user_id;

我在每一行得到两次管理员。我想删除组id为用户的管理员的其他行,即在本查询中为1。我如何实现这一点?sqlfiddle是。与组相关的信息位于“所有组”表中。

假设您希望保留具有最大
组id
值的行

select *
  from (select u.user_id,
               u.username,
               u.first_name,
               u.middle_name,
               u.last_name,
               u.password,
               ug.group_id,
               rank() over (partition by ug.user_id
                                order by ug.group_id desc) rnk
          from users u
               join user_groups ug
                 on u.user_id = ug.user_id)
 where rnk = 1;

应该有用。以下是假设您希望保留具有最大
组id的行的

select *
  from (select u.user_id,
               u.username,
               u.first_name,
               u.middle_name,
               u.last_name,
               u.password,
               ug.group_id,
               rank() over (partition by ug.user_id
                                order by ug.group_id desc) rnk
          from users u
               join user_groups ug
                 on u.user_id = ug.user_id)
 where rnk = 1;
应该有用。这是你的电话号码