TSQL类似查询不同的结果

时间:2013-03-04 17:10:54

标签: sql

此查询:

SELECT ROWNUMBER,FATHERITEMNO,FATHERVARIANT
FROM STOCKBILLMAT WHERE FATHERVARIANT ='LOCK' 
AND FATHERITEMNO ='U5138'

给了我2个结果:

12779526   "U5138"   "LOCK"
12779527   "U5138"   "LOCK"

但是在同一张桌子上的以下查询:

SELECT ROWNUMBER,FATHERITEMNO,FATHERVARIANT
FROM STOCKBILLMAT WHERE FATHERVARIANT ='LOCK' 
AND ROWNUMBER > 12818500 
AND ROWNUMBER < 12818590 

给了我这些5:

12818532   "U5318"   "LOCK"
12818533   "U5318"   "LOCK"
12818558   "U5318"   "LOCK"
12818559   "U5318"   "LOCK"
12818560   "U5318"   "LOCK"

我的问题是,除非我有一个严肃的金发时刻,第二个查询返回的所有行“应该”也已被第一个查询返回!

注意:

  1. 我只添加了ROWNUMBER范围以缩小搜索范围,因为我大致知道它们的位置。如果我省略了那个过滤器并向下滚动,我会看到5个结果,但不是第一个查询中的2个......
  2. STOCKBILLMAT是一张桌子,不是视图。
  3. 查询在同一个数据库上,在QueryExpress的同一个会话中执行,同样如此。
  4. 服务器上有多个数据库,数据大致相同,其他数据库也是如此。
  5. 知道为什么会这样吗?

2 个答案:

答案 0 :(得分:2)

将您的第一个查询从U5138更改为U5318

SELECT ROWNUMBER,FATHERITEMNO,FATHERVARIANT
FROM STOCKBILLMAT WHERE FATHERVARIANT ='LOCK' 
AND FATHERITEMNO ='U5318'

答案 1 :(得分:0)

查询由行号关闭。第一个查询返回ROWNUMBER 12 * 7 * 79526和12 * 7 * 79527,但第二个查询是以12 * 8 <开头的不同范围/ EM> *