Установить статус столбца на основе соответствия между двумя таблицами - PullRequest
0 голосов
/ 04 мая 2019

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

T1

id
1
2
3
4

T2

id status
1  Yes
2  Yes
3  Yes
4  Yes
5  No
6  No

Если я нахожу идентификатор в обеих таблицах, статус должен быть обновлен как Даиначе нет

Ответы [ 2 ]

0 голосов
/ 04 мая 2019

Вы можете обновить, используя LEFT JOIN. Если t1.id равно нулю, совпадения нет, и вы можете установить его на No. В противном случае установите его на Да.

UPDATE t2
  SET t2.Status = CASE WHEN t1.id IS NOT NULL THEN 'Yes' 
                       ELSE 'No' 
                  END
  FROM t2
  LEFT JOIN t1
    ON t1.id = t2.id

Кроме того, вы можете использовать подзапрос в CASE

UPDATE t2
  SET t2.Status = CASE WHEN t2.id IN (SELECT id FROM t1) THEN 'Yes' 
                       ELSE 'No' 
                  END
0 голосов
/ 04 мая 2019

Одним из методов является использование выражения CASE и EXITS с коррелированным подзапросом, который проверяет наличие строки в другой таблице.

UPDATE t2
       SET status = CASE
                      WHEN EXISTS (SELECT *
                                          FROM t1
                                          WHERE t1.id = t2.id) THEN
                        'Yes'
                      ELSE
                        'No'
                    END;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...