2015-09-21 2 views
-1

Прежде чем я разместил это, я также прочитал this. Но я думал, может быть, моя проблема была несколько иной.SQL Server INSERT новые записи

У меня есть сценарий, где моя таблица структура выглядит следующим образом:

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,

+1

«У меня нет первичного ключа, так как таблица является таблица поиска» - это логика имеет недостатки. –

+0

Не знаете, почему требуется соединение? – JBond

+0

просто поместите свой дополнительный запрос где предложение в другом запросе, где статья – sagi

ответ

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'; 
Смежные вопросы