当前位置: 首页 > 面试题库 >

从一个表中选择并插入到另外两个表中

文彭祖
2023-03-14
问题内容

我是SQL的初学者,对Transact-SQL不太了解。

我意识到这是一个新手问题,但是我正在寻找一个简单的解决方案。

我有一个带有一些列(locationCode, CustomerCode)的表。

主表

    ItemCode    locationCode    CustomerCode
    I001        001001          C001 
    I002        001002          C001    
    I003        001001          C002
    I004        002001          C002

我想从该表中选择数据并插入到其他两个表中。

第一桌

firstTblId(autoIncrement)  warehouseCode  CustomerCode
       1                       001           C001   
       2                       001           C002
       3                       002           C002

warehouseCode 是来自的前三个字符的组合 locationCode

第一个表中的数据按的前三个字符locationCode和客户代码分组

第二张桌子

secondTblId
(autoIncrement)  ItemCode  locationCode  CustomerCode   firstTblId(FK)
      1            I001       001001        C001            1
      2            I002       001002        C001            1
      3            I003       001001        C002            2
      4            I004       002001        C002            3

那么,如何通过使用SQL选择主表的行来插入第一张表和第二张表呢?

感谢您的所有答复。


问题答案:

我认为您想要类似以下的内容。临时表@Output将捕获第一个表的插入标识,然后在插入第二个表时可以使用这些标识。

DECLARE @Output TABLE 
(       FirstTableID    INT NOT NULL PRIMARY KEY, 
        WarehouseCode   VARCHAR(3), 
        CustomerCode    VARCHAR(4)
)
INSERT INTO FirstTable (WarehouseCode, CustomerCode)
OUTPUT inserted.FirstTblID, inserted.WarehouseCode, inserted.CustomerCode INTO @Output
SELECT  DISTINCT LEFT(LocationCode, 3) [WarehouseCode], CustomerCode
FROM    [PrimaryTable]

INSERT INTO SecondTable (ItemCode, LocationCode, CustomerCode, FirstTblID)
SELECT  p.ItemCode,
        p.LocationCode,
        p.CustomerCode, 
        o.FirstTableID
FROM    [PrimaryTable] p
        INNER JOIN @Output o
            ON LEFT(LocationCode, 3) = WarehouseCode
            AND p.CustomerCode = o.CustomerCode


 类似资料:
  • null 目前我可以完成第1和第2步,但是(假设可以完成)我无法获得第3步中“not exist”的语法。 这是我当前的代码:

  • 我试图在从一个表创建一个值后将其插入另一个表我有两个数据库“mem”和“location” 我想从mem表中添加主键id,并将其插入到位置表中的user_id列中。 我有一个sql查询在我的注册表单页面,自动递增'id'在mem表中,但似乎没有添加相同的值到位置表中的user_id, 有人能帮忙吗!

  • 我有两个具有相同列的表,这些表没有唯一的列。假设列为Col1、Col2、Col3和Col4。表是T1和T2。 我要做的是插入从T2到T1的所有行,其中Col1 比如Col1=“APPLE”和Col2=“2019”。如果一行在T2中包含Col1=“APPLE”和Col2=2019,我不想将其插入T1,而如果一行包含Col1=“APPLE”和Col2=2020,我想将其插入T1。 我正在努力找到最简单

  • 我的数据库中有两个表。一个表包含有关用户的信息,而另一个表包含有关预订的数据。当用户进行预订时,userid将被放置在预订表中。现在,我想展示一张用户的照片,其中包括预订的备注和日期,但是照片在users表中。 这是我的两张桌子: null null

  • 问题内容: 我有2个不同的表,但各列的命名略有不同。我想从一个表中获取信息,然后将其放入另一个表中。仅当表1中的“信息字段”不为null时,才需要将表1中的信息放入表2中。表2在创建任何东西时都有一个唯一的ID,因此插入的任何东西都需要获得下一个可用的ID号。 表格1 表2 问题答案: 这应该工作。您无需担心Table2中的identify字段。

  • 问题内容: 这是我的代码: 您可以看到我要执行的操作,但是我不确定如何正确编写此查询。 我得到的继承人错误: 警告:mysql_fetch_assoc():提供的参数不是有效的MySQL结果资源 这是我的mysql_fetch_assoc: 问题答案: 尝试改变…的喜欢 …至…