如何将 select 语句中的值与硬编码值一起插入到 table 中
How to insert a value from a select statement into a table along with a hardcoded value
我有一个名为 ROLES 的 table,其中 ROLEID 和 ROLEDESC 作为列。
我正在尝试从 ROLES table 获取 max ROLEID 并将其与硬编码值一起存储在另一个 table 中说 'NEWROLEDESC'
新的 table(即 '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')
不是 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
列中获得相同的值。
我有一个名为 ROLES 的 table,其中 ROLEID 和 ROLEDESC 作为列。 我正在尝试从 ROLES table 获取 max ROLEID 并将其与硬编码值一起存储在另一个 table 中说 'NEWROLEDESC'
新的 table(即 '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')
不是 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
列中获得相同的值。