#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;