left join取右边第一条数据
有一个这样的需求:
左连接取右边的一条时间最大的一条数据
如果写成:
SELECT * FROM ACT_HI_COMMENT WHERE PROC_INST_ID_ in (4811676,4511941) GROUP BY PROC_INST_ID_ ORDER BY proc_inst_id_,TIME_ desc
可是实际情况 group by 先执行,order by后执行,结果就是讲group by后的数据排序而已.
这里的方法是再加一层group by ,因为group 默认是取第一条数据的
SELECT * FROM ( -- 取出时间最新的一条记录 SELECT * FROM ACT_HI_COMMENT WHERE PROC_INST_ID_ in (4811676,4511941) ORDER BY proc_inst_id_,TIME_ desc ) t GROUP BY t.proc_inst_id_
结果就是: