有一张表有uid,username,passwrod,salt四个字段,其中id为自增长字段,当前最大值是5,我想插入一行记录,它的id要用现在的最大id值加10,也就是15,所以用了如下的语句:select max(uid)+10 as newId from cd_members;
insert into cd_members (uid, username,password,salt) values("+newId+",'username', 'f6a05436cb726937f0ed554cf5bc2250','123456');结果数据是插入进去了,不过id是6而不是15.
很奇怪,请大家指教。

解决方案 »

  1.   

    ...
    呵呵
    select @newId:=(max(uid)+10)  from cd_members; 
    insert into cd_members (uid, username,password,salt) values(@newId,'username', 'f6a05436cb726937f0ed554cf5bc2250','123456'); 
    max(uid)+10 as newId from cd_members; 
    insert into cd_members (uid, username,password,salt) values("+newId+",'username', 'f6a05436cb726937f0ed554cf5bc2250','123456'); 
      

  2.   


    select max(uid)+10 into @newId from cd_members; insert into cd_members (uid, username,password,salt) values(@newId,'username', 'f6a05436cb726937f0ed554cf5bc2250','123456'); 
      

  3.   

    insert into cd_members (uid, username,password,salt) 
    select max(uid)+10,'username', 'f6a05436cb726937f0ed554cf5bc2250','123456' from cd_members;
      

  4.   

    呵呵,以上各位用不同的方法都给解决了。我就不献丑了。
    楼主用哪种方法都可以。
    不够,楼主的
    select max(uid)+10 as newId from cd_members; 
    insert into cd_members (uid, username,password,salt) values("+newId+",'username', 'f6a05436cb726937f0ed554cf5bc2250','123456'); 
    我给提个醒。你的 newId 是当前sql有效,下一个sql是不能用你的上个sql的返回值的。要你就用存储过程 声明个变量 newId,然后:
    select max(uid)+10 into newId from cd_members; 执行如下字符串即可: "insert into cd_members (uid, username,password,salt) values("+newId+",'username', 'f6a05436cb726937f0ed554cf5bc2250','123456')" ;