请通过从两列中选择两个值到同一个表中的一列来插入值。我的查询是。
create table table1(
id int(3) zerofill auto_increment primary key,
prefix varchar(10) default "AB",
username varchar(10)
)
engine=innodb;
Mysql插入查询
insert into table1 (username)
select prefix + (LPAD(Coalesce(MAX(id),0) + 1,3, '0'))
from table1;
上面的插入查询不起作用,它在用户名栏中给出了null,请任何帮助表示赞赏。谢谢。 预期结果如下。
id Prefix username
001 AB AB001
002 AB AB002
003 AB AB003
答案 0 :(得分:2)
+
不是MySQL中的字符串连接运算符。如果您正在使用sql_mode=PIPES_AS_CONCAT
(或equivalent),那么:
insert into table1 (username)
select prefix || (LPAD(Coalesce(MAX(id),0) + 1,3, '0'))
from table1;
否则使用CONCAT
。
答案 1 :(得分:1)
问题:
CONCAT()
NULL
,因此您需要使用COALESCE()
或IFNULL()
来获取连接的DEFAULT值您的查询应如下所示
INSERT INTO table1 (username)
SELECT CONCAT(COALESCE(prefix, 'AB'), LPAD(COALESCE(MAX(id), 0) + 1, 3, '0'))
FROM table1
结果:
| ID | PREFIX | USERNAME | -------------------------- | 1 | AB | AB001 | | 2 | AB | AB002 |
这是 SQLFddle