[英]postgres, WHEN EXISTS to return column value
我有这样的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),则返回“ up”,否则返回“ down”。 但是,如果有任何匹配项,我希望它返回“ 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
任何指针我该怎么做
使用coalesce()
返回第一个非空值:
coalesce((SELECT r.name from downtime d, result r where d.status_id = r.id limit 1), 'up')
要从一列中获取值,您必须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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.