select t.card_id,t.upload_time from CHRDATAUPLOAD t where
t.upload_time = (select max(t1.upload_time) from CHRDATAUPLOAD t1 where t1.card_id = t.card_id )
注:这里的card_id就是标题里说的id。 除了max(), 还有什么更加简便的,速度更加快的方法吗?
t.upload_time = (select max(t1.upload_time) from CHRDATAUPLOAD t1 where t1.card_id = t.card_id )
注:这里的card_id就是标题里说的id。 除了max(), 还有什么更加简便的,速度更加快的方法吗?
SELECT * FROM (SELECT * FROM CHRDATAUPLOAD WHERE card_id=? ORDER BY upload_time desc) WHERE ROWNUM =1先排序然后灾区第一条
select c.card_id, c.upload_time
from (select t.*,
--降序 max最先
row_number() over(partition by t.card_id order by t.upload_time desc) rn
from CHRDATAUPLOAD t) c
where rn = 1;
select t.card_id,t.upload_time from CHRDATAUPLOAD t where
(t.card_id,t.upload_time) in (select t1.card_id,max(t1.upload_time) from CHRDATAUPLOAD t1 group by t1.card
FROM (SELECT T.CARD_ID,
T.UPLOAD_TIME,
MAX(UPLOAD_TIME) OVER(PARTITION BY CARD_ID) AS UPLOAD_TIME_
FROM CHRDATAUPLOAD T) T
WHERE UPLOAD_TIME_ = UPLOAD_TIME;
这样写有问题,如果所有的upload_time都一样,估计和您预期的结果就不同了。
最简单粗暴的办法:
select t.card_id,MAX(t.upload_time) upload_time from CHRDATAUPLOAD t GROUP BY t.card_id ;