[SQL ] 撈取前後兩筆不一樣的資料

作者: LaPass (LaPass)   2014-10-31 10:48:12
資料庫名稱:
MySQL
資料庫版本:
內容/問題描述:
有多筆資料
id rid name value modified date
1 3 小明 0 管理員A 2014-10-31 10:01:00
2 3 小王 0 管理員A 2014-10-31 10:02:00
3 3 小華 1 管理員B 2014-10-31 10:03:00
4 3 小華 1 管理員A 2014-10-31 10:04:00
5 4 小英 5 管理員A 2014-10-31 10:05:00
6 4 小英 5 管理員B 2014-10-31 10:06:00
7 4 小英 6 管理員C 2014-10-31 10:07:00
8 4 小英 7 管理員C 2014-10-31 10:08:00
這資料表記錄了哪個管理員修改過那個資料表的資料
我想尋找 rid=3 且最後變更name欄位的管理員
我目前想到的就只有把rid=3的資料全部撈出來,對時間做降序排列
然後一筆一筆的比對資料而已
這樣感覺起來很沒效率
有沒有辦法直接撈出最後變更的管理員呢?
作者: moyasi (Simple Life)   2014-10-31 13:53:00
最簡單的方式找出max(date)
作者: LaPass (LaPass)   2014-10-31 15:20:00
等等,最後一筆不一定是變更name欄位喔,也可能是變更VAL
作者: moyasi (Simple Life)   2014-10-31 16:03:00
那你的時間應該要存的是有變更name欄位的吧不然你要怎麼回頭去查
作者: LaPass (LaPass)   2014-10-31 16:58:00
那個是整個資料表的LOG檔,我沒辦法動那個結構我是指,有sql變動欄位中的資料的話,就會自動存一筆變動記錄下去。有另外檢視所有變動記錄的頁面,是一筆一筆抓出來顯示,並比對哪個欄位被變動這樣。那現在我要抓的是某個欄位被變動的時間點跟操作者,不是全部。
作者: GoalBased (Artificail Intelligence)   2014-10-31 17:59:00
不是很懂你想抓甚麼東西在這個情況下是 4 3 小華 1 管理員A這一筆嗎?select top 1 modified from table where rid = 3 ordeorder by date desc
作者: bohei (run and fall)   2014-11-01 08:03:00
log檔中紀錄的東西多個變動欄位,就不會把自己搞得這麼痛苦了XD
作者: LaPass (LaPass)   2014-11-03 11:39:00
3 3 小華 1 管理員B 2014-10-31 10:03:00這筆才對,因為是管理員B把他的名稱從小王改成小華多記錄變動欄位是比較簡單沒錯,但是當初設計系統的人是直接位每個資料表多開了個用來記錄的表,然後在程式、資料庫的中介層多加個記錄的動作下去,直接把變動的資料行整行複製過去
作者: GoalBased (Artificail Intelligence)   2014-11-03 12:01:00
下面那篇的回覆 不合用嗎?
作者: cutekid (可愛小孩子)   2014-11-03 12:18:00
Hello 我在下面唷 ^.<

Links booklink

Contact Us: admin [ a t ] ucptt.com