[英]How to insert a value from a select statement into a table along with a hardcoded value
我有一个名为ROLES的表,其中ROLEID和ROLEDESC作为列。 我正在尝试从ROLES表中获取最大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语法吗?
注意 :我只是在写这个作为实验。 我知道AUTO增量会解决这个问题。
重塑AUTO_INCREMENT(MySQL)/SEQUENCE/IDENTITY(SQL Server)
并不是最好的方法,并且最终可能会导致并发查询的值不正确!
INSERT INTO DROLES(DID, DROLEDESC)
SELECT MAX(ROLEID)+1, 'NEWROLEDESC'
FROM ROLES;
请记住,如果您多次插入DROLES
并且ROLES
没有改变,您将在DID
列中获得相同的值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.