一个按键,如果edit1.text是表中有的字段,那么对于表A和B就修改数据(update),如果是表中没有的字段,那么就插入(insert into),这样的SQL语句怎样的写,虽是多次碰到,以前也是用最笨的办法解决了,但是却要几十行代码,想通过一二个SQL语句就解决,不知那位能否帮助一二,因为这样的事情在写代码时有碰到。

解决方案 »

  1.   

    if exists(select 1 from table id=@id)
      update table .... where id =@id
    else
      insert into table(...) values(...)
      

  2.   

    你这应当是在SQL脚本中写可以,可在程序中应是行不通的,如果程序中要完成你这样的算法,可就不这么简单了,你的这种算法和我以前作的一样,我的想法是这样,当然这样的写是错的,只是我想这种思路是通的,应当如果相关语句对的话,这样应当就能达到效果。如:'+quotedstr(edit1.text),..(
      

  3.   

    你这应当是在SQL脚本中写可以,可在程序中应是行不通的,如果程序中要完成你这样的算法,可就不这么简单了,你的这种算法和我以前作的一样,我的想法是这样,当然这样的写是错的,只是我想这种思路是通的,应当如果相关语句对的话,这样应当就能达到效果。如:with adoquery1 do
          begin
          close;
          sql.Clear;
          sql.Add('insert into tb(a,...,b) values ('+quotedstr(edit1.text),...'+quotedstr(edit10.text)) from tb where a<>'+quotedstr(edit1.text));
          open;
    post;
    with adoquery1 do
          begin
          close;
          sql.Clear;
          sql.Add('update into tb(a,...,b) values ('+quotedstr(edit1.text),...'+quotedstr(edit10.text)) from tb where a<>'+quotedstr(edit1.text));
          open;
    post;这样就可,两组代码就完成修改和插入的判断和数据保存,当然如果能合并到一个SQL语句中就更好
      

  4.   

    如果你是放在Query里面的话,你可以用Locate去查询一下有没有存在的啊,存在就EDIT,不存在就INSERT
      

  5.   

    能不能讲完整的代码写出来,我对于SQL很菜,如果稍复杂一点的联合查询就不行了
      

  6.   

    如果edit1.text是表中有的字段  我要搞清楚是表的字段,还是表的记录?