繁体   English   中英

postgres,当存在时返回列值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM