ВСТАВКА с выбранным значением

#sql #sql-server-2008 #sql-server-2005

#sql #sql-server-2008 #sql-server-2005

Вопрос:

Из таблицы:

 user   | groupId
-------------------------
A      | 1
B      | 1
B      | 2
C      | 1
C      | 3         
  

Я хотел бы найти все записи без groupId = 2 и, таким образом, вставить их, что-то вроде этого:

 INSERT INTO Table (user, groupId) VALUES (SELECT user FROM Table WHERE groupId != '2' GROUP BY user, '2')
  

результат должен быть таким:

 user   | groupId
-------------------------
A      | 1
A      | 2
B      | 1
B      | 2
C      | 1
C      | 2
C      | 3
         
  

Поскольку записей слишком много, я не могу делать это по одному или разделять более одного запроса. Может кто-нибудь помочь мне закончить это? Спасибо!

Комментарии:

1. кстати, я использую msssql

Ответ №1:

Использовать insert . . . select :

 INSERT INTO Table (user, groupId) 
    SELECT user, 2
    FROM Table 
    GROUP BY user
    HAVING SUM(CASE WHEN groupId = 2 THEN 1 ELSE 0 END) = 0;