标签:
实例:现有一张统计表,是以task_id和start_time作为联合主键的,每一个任务可以启动多次,这样一来同一个task_id就会对应多个start_time即多条统计记录,现在要求将所有的任务统计出来,也就是查询出task_id唯一的集合,每条任务对应的是最新的一条统计记录
1 <select id="selectLatestStatistics" resultType="com.haitao55.spider.common.dos.StatisticsDO"> 2 <!-- 方法一:使用in关键字 --> 3 select 4 <include refid="allColumns" /> 5 from statistics 6 where start_time in( 7 select max(start_time) from statistics 8 group by task_id) 9 10 <!-- 方法二:使用any_value关键字 --> 11 select task_id taskId,max(start_time) startTime,any_value(end_time) endTime, 12 any_value(success_count) successCount, any_value(failed_count) failedCount, 13 any_value(offline_count) offlineCount, any_value(total_count) totalCount 14 from statistics 15 group by task_id 16 17 <!-- 方法三:连表查询 --> 18 select a.task_id as taskId, a.start_time as startTime, a.end_time as endTime, 19 a.success_count as successCount, a.failed_count as failedCount, 20 a.offline_count as offlineCount, a.total_count as totalCount 21 from statistics a,( 22 select task_id,max(start_time) startTime 23 from statistics 24 group by task_id) b 25 where a.task_id = b.task_id 26 and a.start_time = b.startTime 27 </select>
标签:
原文地址:http://www.cnblogs.com/shuo1208/p/5857895.html