mysql - 自定义自增列

标签 mysql database

我正在制作一个 C# 项目,我需要帮助在 MySQL 数据库中生成和插入如下所示的字段。

161013001

地点:
16是年,
10是月,
13号是天
001 是每天重置的自动递增数字。

例如。

161012-001
161012-002
161012-002
161013-001
161013-002
161014-001
161014-002
161014-003
161014-004
161014-005
161015-001

请指导我如何使这个 ID 每天重置并每天从 1 开始。

最佳答案

这里添加了 MySQL 和 SQL Server 实现,

MySQL:

DROP TEMPORARY TABLE TempDate;
CREATE TEMPORARY TABLE TempDate(
Id VARCHAR(50),
Comments  VARCHAR(50)
);
INSERT INTO TempDate(Id,Comments)
SELECT '190630-001', '1'
UNION 
SELECT '190630-002', '2'
UNION 
SELECT '190701-001', '1'
UNION 
SELECT '190701-002', '2'
UNION 
SELECT '190701-003', '3';

SET @v_ToDay = '';
SET @v_ToDay = (SELECT date_format(current_date(),'%y%m%d'));
SET @v_TotalByDay  = '' ;

SET @v_TotalByDay =(
SELECT CONCAT('000',CAST(CASE WHEN COUNT(1) = 0 THEN 1 ELSE COUNT(1)+1 END as CHAR))
FROM TempDate
WHERE LEFT(Id,6) = @v_ToDay);

SELECT CONCAT(@v_ToDay, '-', CASE WHEN CHAR_LENGTH(RTRIM(@v_TotalByDay)) > 3 THEN RIGHT(@v_TotalByDay,3) ELSE @v_TotalByDay END) as NewIdColumn

SQL服务器:

DECLARE @TempDate TABLE(
Id NVARCHAR(50),
Comments  NVARCHAR(MAX)
)

INSERT INTO @TempDate(Id,Comments)
SELECT '190630-001', '1'
UNION 
SELECT '190630-002', '2'
UNION 
SELECT '190701-001', '1'
UNION 
SELECT '190701-002', '2'
UNION 
SELECT '190701-003', '3'

DECLARE @ToDay NVARCHAR(20) = (SELECT  CONVERT(NVARCHAR(6), GETDATE(), 12))
DECLARE @TotalByDay NVARCHAR(20) = '' 

SELECT @TotalByDay = '000' + CAST(CASE WHEN COUNT(1) = 0 THEN 1 ELSE COUNT(1)+1 END as NVARCHAR(20) )
FROM @TempDate
WHERE LEFT(Id,6) = @ToDay

SELECT @ToDay + '-' + CASE WHEN LEN(@TotalByDay) > 3 THEN RIGHT(@TotalByDay,3) ELSE @TotalByDay END as NewIdColumn

关于mysql - 自定义自增列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47975756/

相关文章:

php - 使用 PHP 和 SQL 进行多重连接没有结果

android.database.sqlite.SQLiteConstraintException : columnidisnotunique(code19) android. 数据库.sqlite.SQLiteConstraintException

database - Redis//Benchmark工具//如何开启异步测试

php - PHP/mySQL 服务器的空响应

mysql - 按结果分组的 SQL 查询未按预期工作

Java - 对象列表返回重复值

php - 我将如何从列中的第二行中获取 echo ?

java - 使用 Java 获取 MySQL 输出的列数

mysql - SQL 无法运行 UPDATE 查询,因为表被指定了两次

sql-server - 为 Microsoft SQL Server 创建统计信息时,列顺序是否重要?