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
C009C002、
C099`->C100等等->C010、
- 类似地,对于
->SC001
,SC002
->SC009
,SC010
->SC100等SC099
- 类似地,对于
->B001
B009B002、
B099`->B100等等->B010、
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个单独的查询。因为我必须分别使用这三个