作者LaPass (LaPass)
看板Database
標題[SQL ] 撈取前後兩筆不一樣的資料
時間Fri Oct 31 10:48:12 2014
資料庫名稱:
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://webptt.com/m.aspx?n=bbs/Database/M.1414723695.A.3FC.html
1F:→ moyasi: 最簡單的方式找出max(date) 10/31 13:53
2F:→ LaPass: 等等,最後一筆不一定是變更name欄位喔,也可能是變更VAL 10/31 15:20
3F:→ moyasi: 那你的時間應該要存的是有變更name欄位的吧 10/31 16:03
4F:→ moyasi: 不然你要怎麼回頭去查 10/31 16:03
5F:→ LaPass: 那個是整個資料表的LOG檔,我沒辦法動那個結構 10/31 16:58
6F:→ LaPass: 我是指,有sql變動欄位中的資料的話,就會自動存一筆變動 10/31 16:59
7F:→ LaPass: 記錄下去。 10/31 16:59
8F:→ LaPass: 有另外檢視所有變動記錄的頁面,是一筆一筆抓出來顯示,並 10/31 16:59
9F:→ LaPass: 比對哪個欄位被變動這樣。 10/31 17:00
10F:→ LaPass: 那現在我要抓的是某個欄位被變動的時間點跟操作者,不是 10/31 17:00
11F:→ LaPass: 全部。 10/31 17:00
12F:推 GoalBased: 不是很懂你想抓甚麼東西 10/31 17:59
13F:→ GoalBased: 在這個情況下是 4 3 小華 1 管理員A 10/31 17:59
14F:→ GoalBased: 這一筆嗎? 10/31 17:59
15F:推 GoalBased: select top 1 modified from table where rid = 3 orde 10/31 18:03
16F:→ GoalBased: order by date desc 10/31 18:03
17F:推 bohei: log檔中紀錄的東西多個變動欄位,就不會把自己搞得這麼痛苦 11/01 08:03
18F:→ bohei: 了XD 11/01 08:03
19F:→ LaPass: 3 3 小華 1 管理員B 2014-10-31 10:03:00 11/03 11:39
20F:→ LaPass: 這筆才對,因為是管理員B把他的名稱從小王改成小華 11/03 11:39
21F:→ LaPass: 多記錄變動欄位是比較簡單沒錯,但是當初設計系統的人是直 11/03 11:40
22F:→ LaPass: 接位每個資料表多開了個用來記錄的表,然後在程式、資料庫 11/03 11:41
23F:→ LaPass: 的中介層多加個記錄的動作下去,直接把變動的資料行整行 11/03 11:42
24F:→ LaPass: 複製過去 11/03 11:42
25F:推 GoalBased: 下面那篇的回覆 不合用嗎? 11/03 12:01
26F:推 cutekid: Hello 我在下面唷 ^.< 11/03 12:18