我做了一个两层的CS系统。
有这样一个问题:
首先,我从数据库服务器Select一个数据集: select ID,Min(value) from table1 group by ID.
然后用户看到最小值以后,会根据其中一个ID去查询这个ID对应的所有value:
select value from table1 where ID := 用户选择的一个ID.如果有其他用户在这两次查询中加入了新的记录,并且使有些ID的最小值发生了变化,那么就会出现一个问题!
第2次的查询结果和第一次的不相符合!!!

解决方案 »

  1.   

    那你查每个ID的最小值的意义何在?只是为了找一个ID?
    还不如,先查出 select distinct id from table1 ,让用户选,
    然后再查对应用户选择的Id的具体明细,然后按value 给他排个序就可以了。
      

  2.   

    同意楼上的,还是一次查询出所有的ID,然后让用户按自己需要的ID去查询 防止记录更新,可以给个时间控件,按时更新查询的结果~
      

  3.   

    或者可以在查每个ID最小值的同时,也执行一条sql,select * from table1
    就是把所有数据都取出来放在缓存中,然后用户选择了一个Id后,
    在对缓存中的数据进行过滤,这样就能保证前后的数据是一致的了。
      

  4.   

    我早上点第一个查询,晚上再点第二个查询,能避免吗??
    再说,你上面的查询select value from table1 where ID := 用户选择的一个ID. 
    仅仅是查出对应id的记录(也许这个id已经不是最小的那个了),但有什么关系呢,是用户选择了这个id来查看的啊,数据本来就是不停更新的啊
      

  5.   


    select value,id from table1 where ID in (select ID,Min(value) from table1 group by ID
    )这样能否解决LZ的困惑呢?
      

  6.   

    用户是根据一个ID对应的最小值来判断要不要查看这个ID的所有记录,
    所以第一个查询不能省。MoveFirst的方法也用了两次查询,只有间隔时间短了!
    用什么方法可以确保两次查询的结果一致了。
      

  7.   

    那就写在一个事物里面,对table1加锁,这样操作的时候就可以禁止其他的操作,
    然后进行2次查询。