create table tbl(id1 int, id2 int, count int) primary key(id1, id2);
表tbl中不存在某条记录时,其功能就如 insert into tbl(id1, id2, count) values(5, 3, 0);
存在时,则如 update tbl set count = count + 1 where id1 = 5 and id2 = 3;否则的话,我还得先判断表中是否存在记录,然后再判断选择那种语句!

解决方案 »

  1.   

    可以参考
    INSERT [LOW_PRIORITY | HIGH_PRIORITY] [IGNORE]
        [INTO] tbl_name [(col_name,...)]
        SELECT ...
        [ ON DUPLICATE KEY UPDATE col_name=expr, ... ]这种形式,在ID1、ID2建立复合索引
      

  2.   

    insert into tbl values (5,3,0)
    on duplicate key update count = count + 1;
      

  3.   

    呵呵,谢谢wwwwb和版主,这个管用!我还有一个疑问,就是执行这条语句过程中
     insert into tbl values (5,3,0) on duplicate key update count = count + 1;
    如果不存在记录则是 1 rows affected
    如果存在的话,则变为 2 rows affected这是不是意味着该语句在后一种情况下被分解成了两条语句呢? 哪两条呢?
      

  4.   

    首先执行插入,导致在PRIMARY KEY中出现重复值,再执行UPDATE
      

  5.   

    这是不是意味着该语句在后一种情况下被分解成了两条语句呢? 哪两条呢?
    INSERT 这句成功了1条
    UPDATE这句也成功了1条。