首页 > 解决方案 > 寻找查询

问题描述

正如您在下图中看到的,列 ID 的数字有时会多次存在,但每次的状态都与列 STATUS 不同。表中的主键是 ID - STATUS。

我想查询数据库,以便我只看到一次 ID 的列表,其中 STATUS 列中的 STATUS 最高。

图片

我想看到这个结果:

253794  5
254680  1
257307  1
258562  5
261213  5
261219  5
261220  5
.....

如何扩展下面的查询以获得我需要的结果?

select *
from STATUSTABLE
where ID in (253794,253794,254680,257307,258562,258562,261213,261213,261219,261219,261220,261220,261222,261222,261223,261223,263544,263544,263544,263544,264804,264804,264823,264823,265616,265616,266233,266233) 
order by ID;

提前致谢!

标签: sql

解决方案


使用group by

select id, max(status) as max_status
from STATUSTABLE
where ID in (253794,253794,254680,257307,258562,258562,261213,261213,261219,261219,261220,261220,261222,261222,261223,261223,263544,263544,263544,263544,264804,264804,264823,264823,265616,265616,266233,266233) 
group by id
order by ID;

推荐阅读