自动添加新的最后一个数字mysql

时间:2015-04-21 07:26:44

标签: php mysql

我在我的表的一列中有这个id号,

0907003
0907004 
0907005

1008005 
1008006
1008007

1009001 
1009002
1009003 

当我添加1009的新值时,它会添加最后三个004,因为以1009(10-09)开头的最后一个数字是003

或者,如果我添加1008的新值,则会添加最后三个008号 因为以1008(10-08)开头的最后一个数字是007

或者,如果我添加0907的新值,则会添加最后三个006号 因为以0907(09-07)开头的最后一个号码是007

怎么做?

非常感谢提前!

$front_id = $this->input->post('gameid'); //09
$middle_id = $this->input->post('netid'); //07

//$last_id will be generate automatically by sql 

$forID = $front_id.$middle_id; 

$sql = "INSERT INTO table ('colum') VALUES (".$forID.")"

3 个答案:

答案 0 :(得分:6)

您必须手动插入新ID

    $max_of_letsay1009 = mysql_result(mysql_query("select MAX(id) from table where id like '1009%'"),0);

    // get the last 3 digits
    $new_number = (int)substr($max_of_letsay1009,-3) + 1;

或者你也可以试试这个:

    $new_id_of_letsay1009 = mysql_result(mysql_query("select MAX(id)+1 from table where id like '1009%'"),0);

这只是我的想法,尚未经过测试且没有错误检查

答案 1 :(得分:1)

您可以尝试以下查询

如果您的值是1009

SELECT MAX(RIGHT(ID,4))+1 FROM TableName WHERE LEFT(ID,4) = '1009'

它将返回该系列的最大数量。

尝试此查询以获取动态ID长度

SELECT MAX(RIGHT(ID,len(id)-LEN('1009')))+1 FROM #TEMP WHERE LEFT(ID,LEN('1009')) = '1009'

您也可以将此查询用作插入语句的ID列的子查询。

答案 2 :(得分:0)

如果它不是自动增量列,则可能。只需要在插入时写入逻辑。