同資料串內讀取最後(新)一筆資料

有許多種交易紀錄的紀錄方法是放在同一個(log)表內,如何取得該同資料最後的狀態?

範例資料表 taba:

  1. id 識別碼
  2. stat 狀態碼
  3. dt 紀錄時間
  4. …….. 其他

在MSSQL的解方為

SELECT * into #tba FROM taba WHERE 1=1;
SELECT a.*, b.ct FROM #tba a JOIN (SELECT id, max(dt) mdt, count(*) ct FROM #tba GROUP BY id) b ON a.id=b.id and a.dt=b.mdt;
drop TABLE #tba

在上段程式碼其中的WHERE段要自行套入條件式,在資料量大的情形下,這樣的做法可以讓執行速度更快一點。

iT邦幫忙 個人帳號:Kw6732