我有一个名为 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语法?
注意:我只是把它写成一个实验。我知道自动增量可以解决问题。除此之外还有什么东西?
答案 0 :(得分:2)
重新发明AUTO_INCREMENT(MySQL)/SEQUENCE/IDENTITY(SQL Server)
不是最好的方法,您可能会使用可靠的查询得到错误的值!
INSERT INTO DROLES(DID, DROLEDESC)
SELECT MAX(ROLEID)+1, 'NEWROLEDESC'
FROM ROLES;
请注意,如果您多次插入DROLES
并且ROLES
未进行转换,则您会在DID
列中获得相同的值。