postgres, КОГДА СУЩЕСТВУЕТ возвращать значение столбца - PullRequest
0 голосов
/ 30 августа 2018

У меня есть SQL-запрос что-то вроде этого:

CASE WHEN EXISTS
(SELECT r.name as name from downtime d, result r where d.status_id = r.id limit 1) 
THEN 'down' 
ELSE 'up' 
END

В этом запросе, если совпадений нет (0 результатов), он возвращает «вверх» или же возвращает «вниз». Но я хочу, чтобы он возвращал "r.name", если есть совпадения. ТАК этот запрос не работает:

CASE WHEN EXISTS
(SELECT r.name as name from downtime d, result r where d.status_id = r.id limit 1) 
THEN r.name 
ELSE 'up' 
END

Любые указатели, как я могу это сделать

Ответы [ 2 ]

0 голосов
/ 30 августа 2018

Чтобы получить значение из столбца, вы должны написать select column_name from table where some condition, так что если вы выполните следующее, оно будет работать.

CASE WHEN EXISTS
(SELECT r.name as name from downtime d, result r where d.status_id = r.id limit 1) 
THEN (SELECT r.name as name from downtime d, result r where d.status_id = r.id limit 1) 
ELSE 'up' 
END
0 голосов
/ 30 августа 2018

Используйте coalesce() для возврата первого ненулевого значения:

coalesce((SELECT r.name from downtime d, result r where d.status_id = r.id limit 1), 'up')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...