服务器端用Oracle数据库,它有一张表里面有10万条记录,我要对其中符合条件的一千条进行逐个修改,如果查一条改一条肯定会非常慢(注:表里建立唯一索引的字段和我的查询条件不是同一字段)。我想先用一个条件把范围缩小到不如说2000条然后再从这2000条里查到唯一的一条进行修改。
我的问题是我已经查出来了2000条,然后想再从这2000条里查出唯一的一条记录的时候SQL语句的from部分该怎么写?
或是有无其他办法。
我的问题是我已经查出来了2000条,然后想再从这2000条里查出唯一的一条记录的时候SQL语句的from部分该怎么写?
或是有无其他办法。
那么就好办了。
比如目前你查的2000条的条件为
select * from tabel where conditon
那么再从这2000条里查,其from 子句的条件里, 可以这样设定
ID IN (select ID from tabel where conditon)
先查出2000条 Set rst1 = cnn.Execute("select * from table where c=1 ")然后再查的时候可不可以这样select * from rst1 where a=1 and b=2把先前得到的数据集当作一个表。如果按 atila1978(上帝之鞭)说的
这个表有3个字段一起可以做为一个唯一标志a、b、c
那么SQL就是这么写
select * from table where c=1
然后再查是用select * from table where (a=1 and b=2) in (select a,b from table where c=1)
这样好象还是没次都要把整个表遍历一遍吧?
10万条遍历1000次而且a、b、c又不是主索引那不是很慢啊
select * from rst1(一个ADO数据集) where a=1 and b=1 and c=1
你的意思,是将条件为c=1的2000条先找出来,生成一个临时表,然后执行其他操作。那不更慢么?呵