如何将select语句中的值与硬编码值一起插入表中

时间:2015-12-03 06:24:57

标签: mysql sql sql-insert

我有一个名为 ROLES 的表格,其中 ROLEID ROLEDESC 作为列。 我正在尝试从 ROLES 表中获取 max ROLEID ,并将其存储在另一个表中,同时将硬编码值显示为'NEWROLEDESC'

新表格(即“DROLES”)结构为: DID DROLEDESC ,其中 DROLEDESC 将使用硬编码值填充 DID 将填充select语句中的值:SELECT MAX(ROLEID)+1 as maxroleid FROM ROLES

我试过了:

insert into DROLES(DID) SELECT MAX(ROLEID)+1 FROM ROLES

现在,上面在DID中插入了最大ID,但是当我尝试

insert into DROLES(DID,DROLEDESC) 
values ((SELECT MAX(ROLEID)+1 FROM ROLES),'NEWROLEDESC')

它不起作用。当然,SQL语法不正确。有没有办法实现它/正确的SQL语法?

注意:我只是把它写成一个实验。我知道自动增量可以解决问题。除此之外还有什么东西?

1 个答案:

答案 0 :(得分:2)

重新发明AUTO_INCREMENT(MySQL)/SEQUENCE/IDENTITY(SQL Server)不是最好的方法,您可能会使用可靠的查询得到错误的值!

INSERT ... SELECT语法为:

INSERT INTO DROLES(DID, DROLEDESC) 
SELECT MAX(ROLEID)+1, 'NEWROLEDESC' 
FROM ROLES;

请注意,如果您多次插入DROLES并且ROLES未进行转换,则您会在DID列中获得相同的值。