我有一个类似这样的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
任何指针我该怎么做
答案 0 :(得分:2)
使用coalesce()
返回第一个非空值:
coalesce((SELECT r.name from downtime d, result r where d.status_id = r.id limit 1), 'up')
答案 1 :(得分:0)
要从一列中获取价值,您必须编写
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