我有一张包含以下数据的表。如何从表中检索唯一值。我的代码为我提供了唯一的值,但删除了没有重复的statuschangeid 7,并找到了该双待的最新批准。特定dupid的有效行是该组的statuschangeid的最大值。我在这里做什么错了?
实际表格
statuschangeid dupid approvalpending
1 1 1
2 1 1
3 1 0
4 2 0
5 2 0
6 2 0
7 3 0
预期表
statuschangeid dupid approvalpending
3 1 0
6 2 0
7 3 0
我得到的输出
statuschangeid dupid approvalpending
3 1 0
6 2 0
我正在使用的代码是:
select dupid, approvalpending, max(statuschangeid) as maxid from tableA group by dupid, approvalpending having count(*) > 1
答案 0 :(得分:0)
如果您不想删除行而只删除选择查询,请使用NOT EXISTS:
select a.statuschangeid, a.dupid, a.approvalpending
from tableA a
where not exists (
select 1 from tableA
where dupid = a.dupid and statuschangeid > a.statuschangeid
)
请参见demo。
结果:
> statuschangeid | dupid | approvalpending
> -------------: | ----: | --------------:
> 3 | 1 | 0
> 6 | 2 | 0
> 7 | 3 | 0