我是SQL的新手,所以如果你能够回答正确的语法(对于PostgreSQL),这将是很棒的。
我有两张桌子
表1“geo_temp”,列[geo_type1] [geo_type2] .... [geo_type6] [geo_typeR];
表2“geo_summary”,列[geo]。
这是我想做的事,
CASE
WHEN (geo_type1 NOTNULL) THEN (geo = geo_type1)
WHEN (geo_type2 NOTNULL) THEN (geo = geo_type2)
...
ELSE (geo = geo_typeR)
非常感谢您的帮助。感谢。
答案 0 :(得分:3)
使用coalesce()
功能:
geo = coalesce(geo1, geo2, ...,geoR)
coalesce()
返回列表中找到的第一个非空值,这就是您的意图。
作为更新声明:
update geo_summary set
geo = (select coalesce(geo1, geo2, ...,geoR)
from geo_temp
where geo_temp.id = geo_summary.id)
答案 1 :(得分:0)
我假设您要在WHERE
或ON
条款中使用此功能。
你可以做点像......
geo =
CASE
WHEN (geo_type1 is NOT NULL) THEN geo_type1
WHEN (geo_type2 is NOT NULL) THEN geo_type2
...
ELSE geo_typeR
END