项目开发功能进入修改bug阶段,偶尔会做一两个新功能,所以技术上的东西学习就少了都是技术的巩固。
项目中遇到一个小问题:在一个表中要取客户重复提交的数据,多个客户可以同时提交数据,根据3个条件查询这些客户每个人提取的最新记录。
开始想使用distinct去掉重复的值,distinct倒是可以去掉重复的值,但是我还需要拿到这个表的主键id,这样distinct就不支持了。
distinct语句中select显示的字段只能是distinct指定的字段,其他字段是不可能出现的。所以只能换一种思路了,我要查询数据的表示主键是自增长的sequence,这样就保证每次提交的新数据主键id都是最大的,所以可以通过分组并取最大值来获取客户提交的数据
蓝色部分就是叙述的内容:
select * from T_RESPONSE_INFO t where t.response_id in(
select
max(response_id) from T_RESPONSE_INFO res
where res.PRICE_TYPE = '02'
and res.SECTION_ID = '81'
and res.SUBMIT_STATUS = '02' group by res.tenders_id
) order
by t.create_time
这样就能获取每个客户最新的提交记录,东西比较简单,主要是熟悉distinct和group的用法,n就没用过了 再熟悉熟悉。