看板 Database 關於我們 聯絡資訊
資料庫名稱: 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的資料全部撈出來,對時間做降序排列 然後一筆一筆的比對資料而已 這樣感覺起來很沒效率 有沒有辦法直接撈出最後變更的管理員呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.163.219.211 ※ 文章網址: http://www.ptt.cc/bbs/Database/M.1414723695.A.3FC.html
moyasi: 最簡單的方式找出max(date) 10/31 13:53
LaPass: 等等,最後一筆不一定是變更name欄位喔,也可能是變更VAL 10/31 15:20
moyasi: 那你的時間應該要存的是有變更name欄位的吧 10/31 16:03
moyasi: 不然你要怎麼回頭去查 10/31 16:03
LaPass: 那個是整個資料表的LOG檔,我沒辦法動那個結構 10/31 16:58
LaPass: 我是指,有sql變動欄位中的資料的話,就會自動存一筆變動 10/31 16:59
LaPass: 記錄下去。 10/31 16:59
LaPass: 有另外檢視所有變動記錄的頁面,是一筆一筆抓出來顯示,並 10/31 16:59
LaPass: 比對哪個欄位被變動這樣。 10/31 17:00
LaPass: 那現在我要抓的是某個欄位被變動的時間點跟操作者,不是 10/31 17:00
LaPass: 全部。 10/31 17:00
GoalBased: 不是很懂你想抓甚麼東西 10/31 17:59
GoalBased: 在這個情況下是 4 3 小華 1 管理員A 10/31 17:59
GoalBased: 這一筆嗎? 10/31 17:59
GoalBased: select top 1 modified from table where rid = 3 orde 10/31 18:03
GoalBased: order by date desc 10/31 18:03
bohei: log檔中紀錄的東西多個變動欄位,就不會把自己搞得這麼痛苦 11/01 08:03
bohei: 了XD 11/01 08:03
LaPass: 3 3 小華 1 管理員B 2014-10-31 10:03:00 11/03 11:39
LaPass: 這筆才對,因為是管理員B把他的名稱從小王改成小華 11/03 11:39
LaPass: 多記錄變動欄位是比較簡單沒錯,但是當初設計系統的人是直 11/03 11:40
LaPass: 接位每個資料表多開了個用來記錄的表,然後在程式、資料庫 11/03 11:41
LaPass: 的中介層多加個記錄的動作下去,直接把變動的資料行整行 11/03 11:42
LaPass: 複製過去 11/03 11:42
GoalBased: 下面那篇的回覆 不合用嗎? 11/03 12:01
cutekid: Hello 我在下面唷 ^.< 11/03 12:18