MySQL:创建具有自动增量的表并将生成的值与同一表的不同列的值连接起来

Posted

技术标签:

【中文标题】MySQL:创建具有自动增量的表并将生成的值与同一表的不同列的值连接起来【英文标题】:MySQL: Creating a table with auto increment and concatenating the values generated with the values of a different column of the same table 【发布时间】:2012-05-23 05:44:21 【问题描述】:

我想创建一个具有 id、name、dept、username 属性的表员工。

id 列的值为 auto_increment。我想将 id 的值与 dept 连接以生成用户名。

以下是我写的查询: 创建表employee emp_id MEDIUMINT NOT NULL AUTO_INCREMENT, name char(30) NOT NULL, dept char(6)NOT NULL, username varchar NOT NULL PRIMARY KEY(emp_id);

如何正确地将值插入到该表中?请帮忙。

【问题讨论】:

【参考方案1】:

如果您的用户名始终是iddept 的串联,则无需为其创建单独的列,您可以使用mysql 的CONCAT 函数选择它,如下所示:

SELECT id, name, dept, CONCAT(id, '-', dept) AS username FROM employee

这将返回username 的结果,例如13-sales

如果您想实际存储用户名(可能是因为您希望以后能够自定义它),您必须先插入行以获取 id,然后将设置用户名的行更新为连接的 id和部门。

【讨论】:

【参考方案2】:

您可以在 MySQL 上使用 null 作为最后一个 id:

INSER INTO employee (name, dept) VALUES (?,?);
UPDATE employee SET username = concant(emp_id,dept) WHERE emp_id = NULL; 

【讨论】:

以上是关于MySQL:创建具有自动增量的表并将生成的值与同一表的不同列的值连接起来的主要内容,如果未能解决你的问题,请参考以下文章

MySQL 在从另一个表中选择时插入到具有自动增量的表中

创建具有自动增量的表

创建具有自动增量列的表:“”不是有效名称

sql 如何创建一个具有自动增量的列id的表?

带有Python的Mysql无法插入具有自动增量ID的记录,为啥?

MySQL 仅从 SELECT 创建具有自动增量的临时表