用 replace 代替 insert 用,可要当心呀,下面的情况,本来两条记录,replace后,变成一条了.
mysql> select * from tmp1;
+----+------+------+
| f1 | f2   | f3   |
+----+------+------+
|  2 |  999 | uuuu |
|  3 |    5 | pppp |
+----+------+------+
2 rows in set (0.00 sec)mysql> replace tmp1 select 2,5,'mmmm';
Query OK, 3 rows affected (0.02 sec)
Records: 1  Duplicates: 2  Warnings: 0mysql> select * from tmp1;
+----+------+------+
| f1 | f2   | f3   |
+----+------+------+
|  2 |    5 | mmmm |
+----+------+------+
1 row in set (0.00 sec)mysql>

解决方案 »

  1.   

    楼主似乎从来不看手册。另外你的这个tmp1为什么要另外还设置一个UNIQUE键?
      

  2.   

    我是测试呀.
    有的表,有主键,同样也有 唯一键 呀.
    所以,我的表设计是合理的.
    这个结果也是合法的.我的意思是说,用 replace 取代 insert 时,要慎重呀,否则,会丢记录呀.
      

  3.   

    楼主有道理。但很少有专业人员使用这个REPLACE或者推荐使用这个REPLACE。 一般是应该使用 insert ... on duplicate ..
      

  4.   

    不错,值得借鉴,一般使用INSERT INTO,很少使用REPLACE