我正在制作一个 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/