具体的逻辑是:文件分不同的
DocTypeID
即文件的类型 如果对文件进行处理比如说 银行等部门对单据先要进行扫描然后录入 校对等处理,那么就要分为不同的批次即不同的
BatchNum
在这
BatchNum
还可能有多个
JobNum
而在每个
JobNum
里存放着文件,有时文件分多页 也就是
PageNum
而进行到最后是将这些单据存到数据库中,只能一页一页的存,问题就出现了 在我们进行扫描 录入 校对 入库时
JobState
随之改变 当入库过程中,网络发生中断时, 一个
JobNum
里的
PageNum
的
JobState
就不相同了我们把已入库的设置为“6“未入库的设置为“2” 要进行事务回滚必须要找到出现异常的文件 在这里就要用的
关键字
“IN”SQL语句如下:
select DocTypeID,BatchNum,JobNum from JobQueue where JobState=’2′ and BatchNum in(select BatchNum from JobQueue where JobState=’6′ ) group by DocTypeID,BatchNum,JobNum”
IN的作用就是将两条select语句的结果取并集
这样 一个
JobNum
里如果既有”2″又有”6”就可以查出来
In:等值连接,用来查找多表相同字段的记录
Not In:非等值连接,用来查找不存在的记录
Inner join:内连接,主要用来查找都符合条件的记录
Left join:左连接,主要用来查找左边有,右边没有的用空值表达
Right join:右连接,主要用来查找右边有,左边没有的用空值表达
Order By:升序 Asc 降序 Desc
Group By:分组排序 按字段分组(如按班级分),使用的都要有集合函数存在
Having :对分组条件进行判断,使用都要确保每个字段都要用集合函数
COMPUTE BY:子句使您得以用同一 SELECT 语句既查看明细行,又查看汇总行。可以计算子组的汇总值,也可以计算整个结果集的汇总值。
行聚合函数名称;例如,SUM、AVG、MIN、MAX 或 COUNT
insert into:主要把查询的语句插入到新表。
in的用法是where xx in (‘aa’,’bb’,’cc’)
相当于 where xx=’aa’ or xx=’bb’ or xx=’cc’