0

这个查询:

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. 服务器上有多个数据库具有大致相同的数据,并且在其他数据库上也会发生同样的事情。

知道为什么会这样吗?

4

2 回答 2

2

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

SELECT ROWNUMBER,FATHERITEMNO,FATHERVARIANT
FROM STOCKBILLMAT WHERE FATHERVARIANT ='LOCK' 
AND FATHERITEMNO ='U5318'
于 2013-03-04T17:20:22.800 回答
0

查询按行号关闭。第一个查询返回 ROWNUMBERs 12* 7 *79526 和 12* 7 *79527,但第二个查询是不同的范围,以 12* 8 * 开头。

于 2013-03-04T17:22:50.440 回答