Как обновить значения yes / no в условии if в запросе SQL? - PullRequest
0 голосов
/ 20 марта 2020

Я хотел бы иметь значения да / нет в одном из столбцов на основе запроса ниже. Я успешно получил значение yes, но я не знал, как не иметь значения в столбце.

create procedure xyz
as
update event_alerts 
set server_match = 'YES' 
where event_alerts.server_name in 
(
    select server_name 
    from event_alerts
    inner join sql_servers on
        event_alerts.server_name = sql_servers.List_of_servers
)

update event_alerts set server_match = 'No'

Я застрял с последней строкой о том, как обновить значение «no» в колонка.

Ответы [ 2 ]

1 голос
/ 20 марта 2020

Вы можете сделать join с update:

update ea 
      set ea.server_match = (case when ss.server_name is null then 'No' else 'Yes' end)
from event_alerts ea left join
     sql_servers ss
     on ss.server_name = ea.server_name; 

Примечание: JOIN с синтаксисом обновления может очень зависеть от базы данных. Но вы не пометили правильную СУБД, которую вы используете ..

1 голос
/ 20 марта 2020

Вы можете использовать case выражение и подзапрос:

update event_alerts
    set server_match = (case when event_alerts.server_name in 
                                      (select server_name
                                       from event_alerts ea join
                                            sql_servers ss
                                            on ea.server_name = ss.List_of_servers
                                      )
                             then 'yes' else 'no'
                        end);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...