作者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/cn.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