sql - 使用来自另一个表的查询结果值向表中插入一行

标签 sql sql-server tsql stored-procedures

我有一个存储过程:

CREATE PROCEDURE MyProc
(
    @Param1  [datetime],
    @Param2  [nvarchar](20),
    @Param3  [nvarchar](20),
    @Param4  [nvarchar](20),
    @Param5  [nvarchar](20),
)
AS
BEGIN   
INSERT INTO MyTable1
  (
    Field1,
    Field2,
    Field3,
    Field4,
    Field5
  )   
 SELECT         
    @Param1,
    @Param2,
    @Param3,
    Field12,
    'constantValue'         
FROM   MyTable2
WHERE  Field13 = @Param4
END

我如何更改存储过程以便它插入到 MyTable1Field5 而不是 constantValue 而是另一个查询的结果使用最后一个参数 (@Param5) 到 MyTable2
即:

FROM   MyTable2
WHERE  Field13 = @Param5

最佳答案

INSERT INTO MyTable1
(
  Field1,
  Field2,
  Field3,
  Field4,
  Field5
)   
SELECT         
    @Param1,
    @Param2,
    @Param3,
    Field12,
    (
         select field_name from MyTable2 where Field13 = @Param5
    )
FROM   
    MyTable2
WHERE 
    Field13 = @Param4
END

或者声明一个新变量:

SET @newparam = (SELECT field_name FROM MyTable2 WHERE Field13 = @Param5 )

然后将这个新参数插入到插入语句中。

关于sql - 使用来自另一个表的查询结果值向表中插入一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8214580/

相关文章:

sql - 从结果集创建长字符串

mysql - 显示出现次数最多的组

java - 从表中的所有列获取文本 Java

php - 在完全工作的数据库上构建 Yii Web 应用程序

java - 合并时生成错误的 SQL 更新查询

sql-server - BUILTIN\Administrators 已删除 - 如何撤消

SQL Server 乐观锁定 - 返回更改的时间戳值

sql - 如果不同的列为 true,则替换列的值

mysql - MySQL 中的行项目计数

sql - 具有动态列的透视 SQL 表