如何在SQL中插入静态值与关联表动态ID的组合数据?
静态+动态数据插入的正确SQL语法
方法1:直接用 INSERT INTO ... SELECT(推荐)
无需额外声明变量,直接将静态值与动态查询结果组合插入,代码更简洁高效:
INSERT INTO Sports (SportName, NumberOfPlayersID) SELECT 'Soccer', NumberOfPlayersID FROM NumberOfPlayersLnk WHERE Players = '11'
说明:这里的'Soccer'是固定静态值,会和NumberOfPlayersLnk表中符合Players='11'条件的NumberOfPlayersID配对插入。只要WHERE条件能保证返回唯一行,就只会插入一条符合要求的记录。
方法2:保留变量的写法(你的原代码其实合法)
你之前写的代码本身是可以正常运行的——VALUES确实不能直接嵌套SELECT语句,但通过变量中转动态值是完全合规的:
DECLARE @NumberOfPlayersID uuid SELECT @NumberOfPlayersID = NumberOfPlayersID FROM NumberOfPlayersLnk WHERE Players = '11' INSERT INTO Sports (SportName, NumberOfPlayersID) VALUES ('Soccer', @NumberOfPlayersID)
注意:如果NumberOfPlayersLnk表中Players='11'的记录有多条,变量会被最后一行的ID覆盖,所以要确保该条件仅返回唯一行,避免插入错误数据。
内容的提问来源于stack exchange,提问作者cleanuseless
相关产品推荐
相关产品推荐

