sql - 用于将数据从一个表插入到具有相同列名的另一个表的存储过程

标签 sql sql-server tsql stored-procedures

我有一张主 table 和几张较小的 table 。

  • Master 表有 C1 | C2 | C3 | C4| C5 |
  • 一张小 table 有C1 | C2 | C3 |

还有@C1(一个变量,其值与Master 表中C1 的值相匹配。

两个表的列名都匹配。我想创建一个存储过程,将 Master 表(C1C2C3)中的值插入到较小的表(C1、C2、C3)。

我的努力:

Create proc Schema.Proc
(@C1 int)
AS
BEGIN
INSERT INTO SmallTable
(C1, C2, C3) --- Columns of smaller table
Values (SELECT C1, C2, C3 ---Columns of Master table
FROM MasterTable)
WHERE C1 = @C1 --- Where value of C1 of Master table matches the value of @C1
END

请帮忙

谢谢

最佳答案

您需要使用 INSERT INTO ... SELECT ..... 语法 - 不涉及 VALUES 关键字:

CREATE PROCEDURE Schema.Proc
   (@C1 int)
AS
BEGIN
    INSERT INTO SmallTable(C1, C2, C3) --- Columns of smaller table
        SELECT C1, C2, C3 ---Columns of Master table
        FROM MasterTable
        WHERE C1 = @C1 --- Where value of C1 of Master table matches the value of @C1
END

关于sql - 用于将数据从一个表插入到具有相同列名的另一个表的存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14204834/

相关文章:

sql-server - "Real Time"SQL Server 数据变更检测

mysql - 删除不同数据库中没有相同代码的行

c# - 确定哪些 SQL 数据类型需要引用值?

sql-server - 如何使用 sql-server 从订单中计算重叠的订阅天数

mysql - 从 MySQL 日期时间字段中选择,其中年份不重要

SQL Server批量插入抛出请求超时错误?

sql-server - 使用 Hibernate 从 MS SQL 迁移到 Postgres

sql - SQL Server如何计算DATEDIFF函数?

sql - 复合主键+外键

sql - 1 个 SQLITE 查询中的多个 COUNT