to lastlove 这是因为我们要搞一个工号不能重复的数据库,而且中间或许有工人辞职,那么这个工号就会空出来,而我们又不希望工号不断增长,能够找出中间 缺失的工号啊!
to labaylm我已经说过,当数据量很大的时候,这样的循环就会很慢,我这里有1000多条记录,一次循环至少要很久的时间啊!
既然是工号,应该是自动增长的把! with table do begin open; first; Firstid:=table.fieldbyName('id').asinteger; // 必须知道首次的ID while not eof begin while fieldByName('id').asinteger<>firstID+i do begin // 保存此时的(firstID+i) i:=i+1; end; next; end;// end of while not eof end;// end of with // 没有实践 不知道行不行
你的是什么数据库?Access?MSSQL?
先建一个表:只有一个字段,其中值必须保证为1-100000(可随你需要而设) 然后,假设此表名为TABLE_TEST,你所要进行的表为TABLE1, 那么就可以 select * from table_test where fieldname not in(select fieldname from table1) and fieldname <= (select max(fieldname) from table1)办法有点粗鲁,简单粗暴,行之有效
1,建一个表TABLE1 一个字段:FIELDNAME1,值范围:1-10000(根据需要而设的连续号) 2,设你的表为TABLE2,字段名为FIELDNAME2 命令如下: SELECT FIELDNAME1 FROM TABLE1 WHERE FIELDNAME1 NOT IN(SELECT FIELDNAME2 FROM TABLE2) AND FIELDNAME1<=(SELECT MAX(FIELDNAME2) FROM TABLE2)简单粗暴,行之有效,QQ 121101482
请说详细点好吗???
可以:
select a from table1 where a not in (select a from table2 )
最好是这样,如果要循环的话,我看不只一次
如果没有这样一个表的话,可有什么办法呢???请指教???
我看不太好吧,这样的话,我不是要建一个临时表,如果有一万条记录,那我不是要建一万条这样的记录,我看不好,有什么更好的办法呢??
怎么循环,你能不能说详细点,谢谢!
这是因为我们要搞一个工号不能重复的数据库,而且中间或许有工人辞职,那么这个工号就会空出来,而我们又不希望工号不断增长,能够找出中间
缺失的工号啊!
with table do
begin
open;
first;
Firstid:=table.fieldbyName('id').asinteger;
// 必须知道首次的ID
while not eof
begin
while fieldByName('id').asinteger<>firstID+i do
begin
// 保存此时的(firstID+i)
i:=i+1;
end;
next;
end;// end of while not eof
end;// end of with
// 没有实践 不知道行不行
然后,假设此表名为TABLE_TEST,你所要进行的表为TABLE1,
那么就可以
select * from table_test where fieldname not in(select fieldname
from table1) and fieldname <= (select max(fieldname) from table1)办法有点粗鲁,简单粗暴,行之有效
2,设你的表为TABLE2,字段名为FIELDNAME2
命令如下:
SELECT FIELDNAME1 FROM TABLE1 WHERE FIELDNAME1 NOT IN(SELECT FIELDNAME2 FROM TABLE2) AND FIELDNAME1<=(SELECT MAX(FIELDNAME2) FROM TABLE2)简单粗暴,行之有效,QQ 121101482