在我发布这篇文章之前,我也阅读了this。但我认为可能是我的问题略有不同。
我有一个场景,我的表结构如下:
MY_TABLE :
my_id | what_I_have | what_I_can_do
我没有主键,因为该表是查找表(没有任何基础)。我想要的只是获取my_id
的一组值,这些值基于what_I_have
和what_I_can_do
的某些值。获得结果集(使用my_d
)后,我希望为结果集中的每个my_table
向my_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,
答案 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';