试试看用not in 可以解决吗?

解决方案 »

  1.   

    to lastlove:
     请说详细点好吗???
      

  2.   

    如果你有个表里1,2,3,...10都有的话~~
    可以:
    select a from table1 where a not in (select a from table2 )
      

  3.   

    to labaylm
    最好是这样,如果要循环的话,我看不只一次
      

  4.   

    to lastlove
     如果没有这样一个表的话,可有什么办法呢???请指教???
      

  5.   

    to labaylm
    我看不太好吧,这样的话,我不是要建一个临时表,如果有一万条记录,那我不是要建一万条这样的记录,我看不好,有什么更好的办法呢??
      

  6.   

    to labaylm
    怎么循环,你能不能说详细点,谢谢!
      

  7.   

    你循环读取table1中的数据,并记录当前第n条数据为a,在读下一条n+1条,记录数据为b,计算a,b之间的缺少数据,并把b赋值给a,继续循环,直到最后
      

  8.   

    to lastlove
    这是因为我们要搞一个工号不能重复的数据库,而且中间或许有工人辞职,那么这个工号就会空出来,而我们又不希望工号不断增长,能够找出中间
    缺失的工号啊!
      

  9.   

    to  labaylm我已经说过,当数据量很大的时候,这样的循环就会很慢,我这里有1000多条记录,一次循环至少要很久的时间啊!
      

  10.   

    既然是工号,应该是自动增长的把!
    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
    // 没有实践 不知道行不行
      

  11.   

    你的是什么数据库?Access?MSSQL?
      

  12.   

    先建一个表:只有一个字段,其中值必须保证为1-100000(可随你需要而设)
    然后,假设此表名为TABLE_TEST,你所要进行的表为TABLE1,
    那么就可以
        select * from table_test where fieldname not in(select fieldname
     from table1) and fieldname <= (select max(fieldname) from table1)办法有点粗鲁,简单粗暴,行之有效
      

  13.   

    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