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

How to insert a value from a select statement into a table along with a hardcoded value

我有一个名为 ROLES 的 table,其中 ROLEIDROLEDESC 作为列。 我正在尝试从 ROLES table 获取 max ROLEID 并将其与硬编码值一起存储在另一个 table 中说 'NEWROLEDESC'

新的 table(即 'DROLES')结构是:DIDDROLEDESC 其中 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')

不是 work.Ofcourse SQL 语法不正确。有没有办法实现 it/The 正确的 SQL 语法?

注意:我只是把它写成一个实验。我知道 AUTO 增量会做 trick.Anything 除此之外吗?

重新发明 AUTO_INCREMENT(MySQL)/SEQUENCE/IDENTITY(SQL Server) 不是最好的方法,您可能会在并发查询中得到不正确的值!

INSERT ... SELECT 语法是:

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

请记住,如果您向 DROLES 插入多次并且 ROLES 未更改,您将在 DID 列中获得相同的值。