SQL Server INSERT新记录

时间:2015-09-21 00:05:15

标签: sql insert sql-server-2012

在我发布这篇文章之前,我也阅读了this。但我认为可能是我的问题略有不同。

我有一个场景,我的表结构如下:

MY_TABLE

my_id | what_I_have | what_I_can_do

我没有主键,因为该表是查找表(没有任何基础)。我想要的只是获取my_id的一组值,这些值基于what_I_havewhat_I_can_do的某些值。获得结果集(使用my_d)后,我希望为结果集中的每个my_tablemy_id插入新记录,并为其他列添加其他信息。

E.g。

01001 | boxes | delivery  | (existing)
01002 | boxes | delivery  | (existing)
01001 | boxes | unpacking | (new)
01002 | boxes | unpacking | (new)

我考虑过做以下事情:

INSERT INTO my_table(my_id, what_I_have, what_I_can_do, my_customer_company)
    SELECT 
        my_id, 'boxes', 'unpacking' 
    FROM 
        my_table (NOLOCK)
    WHERE 
        my_id IN (SELECT b.my_id FROM my_table b(NOLOCK) 
                  WHERE b.what_I_have = 'boxes' 
                    AND b.what_I_can_do = 'delivery')

我知道可能有一种方法可以使用INNER JOIN并在没有"嵌套"的情况下顺利完成。但是这会起作用还是我错过了什么?

KR,

1 个答案:

答案 0 :(得分:2)

我认为你根本不需要嵌套或join

INSERT INTO my_table(my_id, what_I_have, what_I_can_do, my_customer_company)
    SELECT my_id, 'boxes', 'unpacking'
    FROM my_table
    WHERE what_I_have = 'boxes' AND what_I_can_do = 'delivery';