本意想通过下面的语句,将tmp2的记录写入tmp1,要求写入时,如果唯一键存在,使用tmp2.num更新tmp1.num,其他值不变,如果唯一键不存在,就直接插入。
insert into tmp1 select * from tmp2 onduplicate key num=tmp2.num;
但执行不了,请问如何修改已达到上面要求?

解决方案 »

  1.   

    MYSQL中的语法如下。
    INSERT INTO table (a,b,c) VALUES (1,2,3)
      ON DUPLICATE KEY UPDATE c=c+1;
    如下
    insert into tmp1 select * from tmp2 on duplicate key update num=VALUES(num);
      

  2.   

    http://blog.chinaunix.net/u3/116107/showart.php?id=2297866参考此文。
      

  3.   

    insert into tmp1 select * from tmp2 on duplicate key update num=tmp2.num;
      

  4.   

    sorry,前面是我漏掉了update,insert into tmp1 select * from tmp2 onduplicate key update num=tmp2.num;问题是这样也是错误的。
      

  5.   

    insert into tmp1 select * from tmp2 on duplicate key update name=values(name)
      

  6.   

    总是打错字insert into tmp1 select * from tmp2 on duplicate key update num=tmp2.num;这样也是错的
      

  7.   

    问题是groupby子句造成的:create table tmp1(id int,id1 int,num int,unique key(id,id1));
    create table tmp2(id int,id1 int,num int,unique key(id,id1));
    insert into tmp1 select * from tmp2 group by id,id1 on duplicate key update num=tmp2.num;执行不了。请帮忙看看怎样改正?
      

  8.   

    Unknown table 'tmp2' in field list。我想在on duplicate key update字句中引用前面select子句中的对应字段的值进行更新,而不是使用某个特定的值,不知sql能否完成这样的任务。
      

  9.   

    insert into tmp1 select * from tmp2 group by id,id1 on duplicate key update num=values(num);
      

  10.   


    不错,关键就是后面这个 values()的使用。
      

  11.   

    group by id,id1  这个什么意思? 它已经是 unique key 了,为什么还要分组