用SQL 语句,或者什么方式 能查到之前的历史 *** 作记录,查某个单据是如何生成的(何时保存、何时审核的)

用SQL 语句,或者什么方式 能查到之前的历史 *** 作记录,查某个单据是如何生成的(何时保存、何时审核的),第1张

创建一个审计表来记录单据的修改记录。主要的字段修改日期,用户名,单据号码,单据类型,修改类型,客户端名称或者IP等等

然后在单据表上创建触发器,将修改记录到审计表中。

有了审计表,就可以方便地查询到历史 *** 作记录了。

方法一:

查询上一条记录的SQL语句(如果有其他的查询条件记得加上other_conditions以免出现不必要的错误):

1

select from table_a where id = (select id from table_a where id < {$id} [and other_conditions] order by id desc limit 1) [and other_conditions];

查询下一条记录的SQL语句(如果有其他的查询条件记得加上other_conditions以免出现不必要的错误):

1

select from table_a where id = (select id from table_a where id > {$id} [and other_conditions] order by id asc limit 1) [and other_conditions];

假如你的表,

accno

只有一个

12的。

没有其他的

accno。

或者你无视

accno,

只找时间最早的那条。

那么:

SELECT

TOP

1

FROM

表名

ORDER

BY

opdate,

optime;

假如你的表,有很多个

accno,

比如有

12,

13,

你要

分别把

12

13

的时间最早对应的记录查出来。

SELECT

FROM

表名

WHERE

NOT

EXISTS

(

SELECT

1

FROM

表名

AS

tmp

WHERE

表名accno

=

tmpaccno

AND

表名opdate

>

tmpopdate

AND

表名optime

>

tmpoptime

);

理解起来,就是查询

对于每一个

accno,

不存在有其他的行,比当前行的

opdate

optime

更加小的。

从而取得

每一个

accno

的,日期时间最早的记录。

历年来所有日期相同的记录

就是说每年的同一个月同一天就是相同的记录吧?

思路是在日期中截取月份,天数。对这两项进行比较。

1 怎样截取:DATE类型或VARCHAR类型的截取方式不同,具体你可以查;

2 查询天数和月份都相同的ID,再根据ID查询完整的记录

以上只是思路

以上就是关于用SQL 语句,或者什么方式 能查到之前的历史 *** 作记录,查某个单据是如何生成的(何时保存、何时审核的)全部的内容,包括:用SQL 语句,或者什么方式 能查到之前的历史 *** 作记录,查某个单据是如何生成的(何时保存、何时审核的)、如何获取SQL查询当前数据上一条和下一条的记录、sql中取时间最早对应的记录等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9785829.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存