Вставить в таблицу SQL только для записей без записи - PullRequest
0 голосов
/ 19 октября 2018

У меня есть две таблицы:

  1. cSc_user: здесь хранится каждый пользователь.PK - camosGUID
  2. cSc_UserRole: когда у пользователя есть роль, здесь сохраняется строка для этого пользователя

Для каждой роли, в которой находится пользователь, существует одна запись в cSc_userRole.FK для camosGUID в этой таблице UserGUID.Также есть столбец RoleGUID.Я хочу рассмотреть только одну роль с RoleGUID = AD3BB.

. Теперь моя цель - создать запись в cSc_UserRole для каждого пользователя, у которого нет записи для роли с RoleGuid = AD3BB.Дополнительно я хочу исключить двух пользователей с camosGUID = -1 и 2032.

Это то, что я уже сделал.Проблема в том, что он создает запись в cSc_UserRole также, если пользователь уже имеет роль.Поэтому он дублируется после выполнения запроса.

INSERT INTO [csc_userrole] ([RSRC], [Deleted], [DateNew], [DateChanged],
                            [UserNew], [UserChanged], [camosGUID],
                            [UserGUID], [RoleGUID])
    SELECT
        0, 0, GETDATE(), GETDATE(),
        2032, 2032, NEWID(),
        camosGUID, 'AD3BB'
    FROM 
        [cSc_User] 
    WHERE 
        csc_user.camosguid <> -1 
        AND csc_user.camosguid <> 2032 
        AND (csc_user.camosguid NOT IN (SELECT userguid
                                        FROM cSc_Userrole) OR 
             csc_user.camosguid IN (SELECT userguid
                                    FROM cSc_Userrole
                                    WHERE roleguid <> 'AD3BB' 
                                      AND roleguid <> 'E5DEE'))

1 Ответ

0 голосов
/ 19 октября 2018

Приведенный ниже запрос вернет искомых пользователей.Я бы оставил это в виде

...