如何使用硬编码的值
问题描述:
沿着插入来自select语句的值到表中我有一个名为ROLES与角色ID和ROLEDESC作为列的表。 我试图从ROLES表得到最大角色ID并将其存储在另一个表中的硬编码值一起说“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')
它不work.Ofcourse的SQL语法不正确。有没有办法实现它/正确的SQL语法?
注意:我只是写这个作为一个实验。我知道AUTO增量会做到这一点。除此之外的任何事情?
答
重新创建AUTO_INCREMENT(MySQL)/SEQUENCE/IDENTITY(SQL Server)
不是最好的方法,你可能会得到不正确的值与concurnt查询!
的INSERT ... SELECT
语法是:
INSERT INTO DROLES(DID, DROLEDESC)
SELECT MAX(ROLEID)+1, 'NEWROLEDESC'
FROM ROLES;
请记住,如果你插入多次DROLES
和ROLES
不chaning你会DID
列得到相同的值。
'插入DROLES(DID,DROLEDESC)SELECT MAX(ROLEID)+1,'NEWROLEDESC'FROM ROLES'请注意并发查询可能导致的错误。重新创建'AUTO_INCREMENT'不是最好的选择。 – lad2025
啊......只是我一直在寻找的东西。正确的SQL语法! :) 谢谢! 谢谢你的建议!只是问这是为了学习的目的! –
@ lad2025,你真的很快:)如果你已经使用评论解决它,如何写在答案..哈哈,1评论^^ – Japongskie