需求是这样的,
从某个表里面删除数据,比如从T_Main表,三个字段 ID,Name,Sex另有一个文本,文本里面有n条记录,比如 '张三','李四','王五'.....T_Main表中有'张三','李四','王五'.....以及其他人的数据,
现要从T_Main表中删除 不包括'张三','李四','王五'...在内,
而是其他人的数据。我是这样想的,
先把'张三','李四','王五'.....插到一个临时表里面,比如T_Del
T_del 字段包括 ID ,Name,然后
Delete form T_Main 
where Name Not in (Select Name from T_del)  感觉这样的做法是不是很麻烦?要建临时表,然后循环插入
'张三','李四','王五'.....这些数据。请高手讨论,up有分

解决方案 »

  1.   

    把文本里的先读入进来啊。
    放在一个字符串里。
    str := '''张三'',''李四'',''王五''';
    然后再
    SQLStr := 'delete from T_Main where Name not in(' + str +')';
    然后不就行了?
    不用建临时表的。
      

  2.   

    把文件内容读到变量数组中去。
    a:array of char
    setlength(a,length)
    然后
    sql=" delect from T_Main where Name not in ('+a+')
      

  3.   

    singlesword(歪歪一剑) 方法可行
      

  4.   

    如果文本里面有几千条记录,每条记录20个字符,
    把这么长的记录组成str,支不支持啊?
    Var Str : WideString?
    delete from T_Main where Name not in(' + str +')'
    这个str能不能支持这么长的字符啊?
      

  5.   

    如果資料太多,可能singlesword(歪歪一剑) 方法就不可行了这个str能不能支持这么长的字符啊?
    //如果太多的話,肯定有限制你自己的方法也許是更好一點
      

  6.   

    T_Main的索引應該是員工編號啊
    如果這樣,臨時表里應該只要這一個字段就行了
      

  7.   

    用singlesword(歪歪一剑)的方法再加上分步骤执行应该可行,就是说将对象列表写到一个文本中,再用一个循环来删除,直到文本内的对象为0