这个你要分两部来做。
第一判断是否要清零。
select * from tbl where id like '字母+当前日期%'
看一下有没有取道纪录。没有就代表得从0开始。第二要取得今天的最大值。
这个就要看你的这个ID的设计。
假设
字母+当前日期+数字
1位  YYYYMMDD 
就像这样
A2004082700001
A2004082700002
select max(id) from tbl where id like '字母+当前日期%'
之后将取到的值用PHP文字函数处理一下,取到最后的数字然后增长1如果你最后的数字不定长
A200408271
A200408272
.
.
A2004082715这个就要用到数据库自己的文字处理函数,各个数据库函数不一样
比如oracleselect max(substr(id,10)) from tbl where id like '字母+当前日期%'
这样就能直接取到最大的数字,然后增长1

解决方案 »

  1.   

    请问zhuomaocn(烦啊) 
    因为编号里面有字母,那么用max()是是否是按ASNI码比较的呢?还是按其他的方法?
      

  2.   

    请问zhuomaocn(烦啊):
    编号格式:如rc20040828001
    $con =mysql_connect("localhost","root","" ) or die("无法连接到数据库!");
    mysql_select_db("d_tire",$con)or die("无法选择数据库!");
    $query="select max(no) from test ";
    $result = mysql_query($query) or die("无法执行SQL");
    while($r=mysql_fetch_array($result))
    $str=$r[no];
    $cur_date=date(Ymd);
    $incr_id=1;$sub_str=substr($str,2,8);
    if($cur_date > $str){
     $str=$cur_date;
     $incr_id=1;
     }
     else
     ++$incr_id;
    //$str_id=rc+$str+$incr_id;
    $str_id= rc."".$str."".$incr_id;
    echo "$str_id";
    我怎么样让$str_id输出的值中$incr_id前的0不被去掉?
      

  3.   

    比如我设置$incr_id=001
    当我输出的时候前面的0就被自动去掉了
      

  4.   

    echo "$str_id";
    ==>
    printf("%0Nd",$str_id); //其中N为你需要的宽度,比如要输出001则N=3另外用str_pad函数也可以
      

  5.   

    请问一下,为什么这条语句输不出最大值呢?
    <?php
    $con =mysql_connect("localhost","root","" ) or die("无法连接到数据库!");
    mysql_select_db("d_tire",$con)or die("无法选择数据库!");
    $query="select max(no) from test ";
    $result = mysql_query($query,$con) or die("无法执行SQL");
    while($r=mysql_fetch_array($result))
    $str_max=$r["no"];
    echo "$str_max";
    ?>
      

  6.   

    $query="select max(no) from test ";
    $result = mysql_query($query,$con) or die("无法执行SQL");
    while($r=mysql_fetch_array($result))
    $str_max=$r["no"]; //这里什么也不会得到,因为查询后并无no列
    echo "$str_max";
    $query="select max(no) from test ";
    ===>
    $query="select max(no) as no from test ";
      

  7.   

    谢谢 xuzuning(唠叨) 老大啊,顺便问一下了:
    那max 取的是什么呢?
    它不是把最大的no取出吗?