具体的逻辑是:文件分不同的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'