繁体   English   中英

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

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

我有一个名为ROLES的表,其中ROLEIDROLEDESC作为列。 我正在尝试从ROLES表中获取最大ROLEID ,并将其与硬编码值(例如“ NEWROLEDESC”)一起存储在另一个表中

新的表(即'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')

这是行不通的。当然,SQL语法不正确。 有什么方法可以实现它/正确的SQL语法吗?

注意 :我只是在写这个作为实验。 我知道AUTO增量会解决这个问题。

重塑AUTO_INCREMENT(MySQL)/SEQUENCE/IDENTITY(SQL Server)并不是最好的方法,并且最终可能会导致并发查询的值不正确!

INSERT ... SELECT语法为:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM