2

我需要使用类似的东西:

 INSERT into tablename(id) 
     SELECT max(id) + 1 
     FROM tablename

其中id小于 1000 和if max(id) = 1000 insert next id as 1,因此该列从 1-1000 填充并重新开始。

我可以拥有并自动增加主键列。

任何帮助将不胜感激。

我不是 SQL 专家,但根据下面的评论,我在 Delphi 中完成了此操作,该 SQL 将在其中执行。我仍然想知道如何在 MYSQL 中完成这一切,也许这里的一位大师可以帮助解决这个问题。

这就是我所做的:

procedure TForm11.Button1Click(Sender: TObject);
var
lastserial : Integer;
begin
 with LastRowQuery do
  begin
    sql.Clear;
    sql.Add('SELECT autoid, id FROM inctest ORDER BY autoid DESC LIMIT 1;');
    execute;
  end;
  If  LastRowQueryid.value < 1000 then lastserial:=  LastRowQueryid.value + 1
  else
   lastserial := 1;
   with LastRowQuery do
    begin
     sql.Clear;
     sql.Add('Insert into inctest (id) values(:theserial)');
     ParamByName('theserial').Value := lastserial;
   execute;
 end;
end;
4

1 回答 1

4

我想也许你想要这个: http ://dev.mysql.com/doc/refman/5.0/en/mathematical-functions.html#function_mod

给出类似的东西

INSERT into tablename(id) SELECT MOD(count(id),1000)+1 FROM tablename

或类似地,

INSERT into tablename(id) SELECT (count(id)%1000)+1 FROM tablename

干杯。

于 2013-04-03T22:02:29.173 回答