BlogJava-焕JAVA超-文章分类-数据库http://www.blogjava.net/silvernapoleon/category/15265.htmlJava & Warcraft IIIzh-cnTue, 27 Feb 2007 12:39:09 GMTTue, 27 Feb 2007 12:39:09 GMT60SQL语句中IN的用法http://www.blogjava.net/silvernapoleon/articles/70078.htmlCrespoCrespoSat, 16 Sep 2006 13:05:00 GMThttp://www.blogjava.net/silvernapoleon/articles/70078.htmlhttp://www.blogjava.net/silvernapoleon/comments/70078.htmlhttp://www.blogjava.net/silvernapoleon/articles/70078.html#Feedback0http://www.blogjava.net/silvernapoleon/comments/commentRss/70078.htmlhttp://www.blogjava.net/silvernapoleon/services/trackbacks/70078.html 列名:
FileName DocTypeID     BatchNum JobNum  PageNum   JobState
文件名      文件的类型      批次号     Job号      页数           文件的状态值
 
       具体的逻辑是:文件分不同的DocTypeID即文件的类型 如果对文件进行处理比如说 银行等部门对单据先要进行扫描然后录入 校对等处理,那么就要分为不同的批次即不同的BatchNum 在这BatchNum 还可能有多个JobNum  而在每个JobNum 里存放着文件,有时文件分多页 也就是PageNum    而进行到最后是将这些单据存到数据库中,只能一页一页的存,问题就出现了 在我们进行扫描 录入 校对 入库时JobState随之改变  当入库过程中,网络发生中断时, 一个JobNum 里的PageNumJobState就不相同了我们把已入库的设置为“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''就可以查出来


Crespo 2006-09-16 21:05 发表评论
]]>