新人求助,简单的问题,group By

javamyself 2017-08-10 09:54:14
表A
id memberId lid createTime
1 111 22 20170810
2 222 33 20170809
3 111 22 20170811

期望查出的结果:
memberId 和 lid分组之后最新的那一条,即:

id memberId lid createTime
2 222 33 20170809
3 111 22 20170811
...全文
271 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
dtaskwhy 2017-08-14
  • 打赏
  • 举报
回复
qyz 2017-08-13
  • 打赏
  • 举报
回复
select * from a a1 where not exists (select 1 from a where memberId = a1.memberid and lid = a1.lid and id > a1.id);
mayanzs 2017-08-10
  • 打赏
  • 举报
回复
select memberId, lid, createTime from (select memberId, lid, createTime,row_number() over (partition by memberId, lid order by createTime desc) rw from A) where rw=1; max(createTime) 可能会出现重复
shpery 2017-08-10
  • 打赏
  • 举报
回复
with t as (
select '1' id,'111' memberId,'22' lid,'20170810' createTime from dual
union all
select '2','222','33','20170809' from dual
union all
select '3','111','22','20170811' from dual
)
select * from t
 where (memberId, lid, createTime) in
       (select memberId, lid, max(createTime) from t group by memberId, lid)
 order by id asc

17,382

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧