admin

通过从两列中选择值来插入同一表中的一列

sql

请通过从两列中选择两个值到同一表的一列中来插入值。以下是我的查询。

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

阅读 182

收藏
2021-06-07

共1个答案

admin

问题:

  1. 正如Matt所提到的,您需要CONCAT()在MySql中使用
  2. 对于插入的第一条记录,您的SELECT返回,NULL因此您需要使用COALESCE()IFNULL()获取DEFAULT值以进行串联

您的查询应如下所示

INSERT INTO table1 (username)
SELECT CONCAT(COALESCE(prefix, 'AB'), LPAD(COALESCE(MAX(id), 0) + 1, 3, '0'))
  FROM table1

结果:

| ID | 前缀| USERNAME |
--------------------------
| 1 | AB | AB001 |
| 2 | AB | AB002 |

这是 SQLFddle

2021-06-07