Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何使用sql查询自动递增字符串_Mysql - Fatal编程技术网

Mysql 如何使用sql查询自动递增字符串

Mysql 如何使用sql查询自动递增字符串,mysql,Mysql,我的字符串类型为C001,SC001,B001 在我的数据库中,它们的定义如下 我试图做的是编写一个查询,检查数据库中先前最高的代码,并将其加为+1 例如C001->C002、C009->C010、C099`->C100等等 类似地,对于SC001->SC002,SC009->SC010,SC099->SC100等 类似地,对于B001->B002、B009->B010、B099`->B100等等 我有一个朋友建议我使用的查询,但该查询只会将AAAA->AAAA01,AAAA09->AAA

我的字符串类型为
C001
SC001
B001

在我的数据库中,它们的定义如下

我试图做的是编写一个查询,检查数据库中先前最高的代码,并将其加为+1

  • 例如
    C001
    ->
    C002、
    C009
    ->C010、
    C099`->C100等等
  • 类似地,对于
    SC001
    ->
    SC002
    SC009
    ->
    SC010
    SC099
    ->SC100等
  • 类似地,对于
    B001
    ->
    B002、
    B009
    ->B010、
    B099`->B100等等
我有一个朋友建议我使用的查询,但该查询只会将
AAAA
->
AAAA01
AAAA09
->
AAAA10

疑问是

    SELECT id AS PrevID, CONCAT(
    SUBSTRING(id, 1, 4),
    IF(CAST(SUBSTRING(id, 5) AS UNSIGNED) <= 9, '0', ''),
    CAST(SUBSTRING(id, 5) AS UNSIGNED) + 1
) AS NextID
FROM (
    -- since you allow strings such as AAAA20 and AAAA100 you can no longer use MAX
    SELECT id
    FROM t
    ORDER BY SUBSTRING(id, 1, 4) DESC, CAST(SUBSTRING(id, 5) AS UNSIGNED) DESC
    LIMIT 1
) x
选择id作为PrevID,CONCAT(
子串(id,1,4),
IF(将子字符串(id,5)转换为无符号)C005

注意我正在使用我的SQLServer5.1

试试这个

SELECT 
CategoryCode,CAST(CONCAT(LPAD(CategoryCode,1,0),LPAD(MAX(RIGHT(CategoryCode, 
3)) + 1, 3, 0) ) AS CHAR),
FROM  test

SELECT 
SubCategoryCode,CAST(CONCAT(LPAD(SubCategoryCode,2,0), 
LPAD(MAX(RIGHT(CategoryCode, 3)) + 1, 3, 0) ) AS CHAR), 
FROM  test

SELECT  
BrandCode,CAST(CONCAT(LPAD(BrandCode,1,0), LPAD(MAX(RIGHT(BrandCode, 3)) + 
1, 3, 0))  AS CHAR) FROM  test

在MySQL 5.x上你不容易做到这一点。问题:当一条记录(例如
C003
)被删除时会发生什么?你会回收该ID吗?@TimBiegeleisen当前没有可删除的独家新闻,我只需添加新行,上面我发布的查询我正在使用MySQL 5xonly@viveksingh如果记录超过了数百,那么它将是s静电sc999@Aishwarya这种情况永远不会发生,因为它可以达到最大值300-400。这种问题是设计拙劣的症状——数据库需要什么样的信息才能将一段数据与另一段数据关联起来,以及您希望向最终用户呈现什么样的信息y、 它给出了很好的结果。但是我必须为此编写3个单独的查询。因为我必须分别使用这三个