我想在表中插入多个值,其中一列中的值按顺序递增。但是,由于业务需求,序列有点复杂。
单个插入将是这样的:
INSERT INTO blah (col1, col2) VALUES ('SU0001', 'myemail');
现在,col1是需要递增的值,但保留固定长度结构。所以下一个插入应该是这样的:
INSERT INTO blah (col1, col2) VALUES ('SU0002', 'myemail');
等等..直到:
INSERT INTO blah (col1, col2) VALUES ('SU1600', 'myemail');
如何仅使用SQL执行此操作。我可以很容易地在Java和Ruby中做到这一点,但我坚持这个并尝试了几件事,但大多数似乎没有保持固定长度结构(它变成SU1,SU2,而不是SU0001,SU0002)。
感谢您的帮助!
维克拉姆
答案 0 :(得分:2)
由于您已经减少了增量,因此您看到的所有内容都是LPAD
。
LPAD(@i, 4, '0')
会在@i
的左侧添加重复的'0',以便生成的字符串至少为4个字符。
您甚至可以将增量逻辑放在trigger。
中delimiter //
CREATE TRIGGER incr_col1 BEFORE INSERT ON blah
FOR EACH ROW BEGIN
SET @prev=(SELECT COALESCE(MAX(col1), 0) FROM blah);
SET NEW.col1 = CONCAT('SU', LPAD(1+SUBSTR(@prev, 3), 4, '0'));
END //
delimiter ;
答案 1 :(得分:0)
使用0-9
创建TEMPORARY TABLE在这个撰写查询后,根据需要连接该表的次数(2 - 00-99等)
之后执行INSERT ... SELECT from subquery
- )
和前导零的LPAD()