Как я могу обновить столбец из инструкции SELECT? - PullRequest
0 голосов
/ 11 апреля 2019

Я пытаюсь обновить столбец для нескольких пользователей.Я взял 3 символа из их имени и 2 символа из их последней и создал псевдоним.Как обновить столбец в другой таблице, используя данные из созданного псевдонима, совпадающие с другим значением, таким как серийный номер контакта?

Select DISTINCT FULLNAME,
    concat(Substring(FULLNAME, 1, 3), substring(FULLNAME, charindex(' ', 
    FULLNAME)+1, 2)) as PIC,
    CONTACT.SERIALNO,
    PASSWD
From CONTACT
    Join CONTPOINT on CONTPOINT.SERIALNO = CONTACT.SERIALNO
        and CONTPOINT.CONTTYPE = CONTACT.CONTTYPE
    Join CONTLIST on CONTLIST.REFSERIALNO = CONTACT.SERIALNO
        and CONTLIST.REFCONTTYPE = CONTACT.CONTTYPE
Where
    --left(CONTACT.fullname,4) in ()
    PASSWD in ('ADDRESS FOR THE SITE', 'ADDRESS OF SITE', 'ADDRESS OF 
    SITE', 'ADDRESS FOR THE SITE', 'ADDRESS OF SITE', 'ADDRESS OF SITE', 
    'THE SITE"S STREET NAME')

1 Ответ

0 голосов
/ 11 апреля 2019

Для этого можно использовать синтаксис UPDATE FROM. Позволяет назвать ваш SELECT оператор ORIGINAL и «другую таблицу», которую вы хотите обновить ДРУГОЙ.

Для использования UPDATE FROM:

UPDATE
    OTHER
  SET 
    COLUMN_TO_UPDATE = ORIGINAL.PIC
  FROM 
    OtherTable OTHER
    INNER JOIN  
      (Select DISTINCT FULLNAME,
              concat(Substring(FULLNAME, 1, 3), substring(FULLNAME, charindex(' ', 
              FULLNAME)+1, 2)) as PIC,
              CONTACT.SERIALNO,
              PASSWD
          From CONTACT
              Join CONTPOINT on CONTPOINT.SERIALNO = CONTACT.SERIALNO
                  and CONTPOINT.CONTTYPE = CONTACT.CONTTYPE
              Join CONTLIST on CONTLIST.REFSERIALNO = CONTACT.SERIALNO
                  and CONTLIST.REFCONTTYPE = CONTACT.CONTTYPE
          Where
              --left(CONTACT.fullname,4) in ()
              PASSWD in ('ADDRESS FOR THE SITE', 'ADDRESS OF SITE', 'ADDRESS OF 
              SITE', 'ADDRESS FOR THE SITE', 'ADDRESS OF SITE', 'ADDRESS OF SITE', 
              'THE SITE"S STREET NAME')) ORIGINAL
      ON (ORIGINAL.SERIALNO = OTHER.SERIALNO)
  WHERE 
    <conditions on OTHER to update>;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...