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(), 還有什么更加簡便的,速度更加快的方法嗎?
uj5u.com熱心網友回復:
SELECT * FROM
(SELECT * FROM CHRDATAUPLOAD WHERE card_id=? ORDER BY upload_time desc)
WHERE ROWNUM =1先排序然后災區第一條
uj5u.com熱心網友回復:
--習慣這么寫,不知道是不是好點,只掃描一次表。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;
uj5u.com熱心網友回復:
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
uj5u.com熱心網友回復:
這個應該是比較快的方法uj5u.com熱心網友回復:
目前資料量不是特別大,先試著用2樓的方法看看 。 謝謝大家uj5u.com熱心網友回復:
SELECT CARD_ID, UPLOAD_TIMEFROM (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;
uj5u.com熱心網友回復:
uj5u.com熱心網友回復:
uj5u.com熱心網友回復:
這樣寫有問題,如果所有的upload_time都一樣,估計和您預期的結果就不同了。
最簡單粗暴的辦法:
select t.card_id,MAX(t.upload_time) upload_time from CHRDATAUPLOAD t GROUP BY t.card_id ;
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/43202.html
標籤:開發
上一篇:如何洗掉臨時表
