2014-04-04 49 views
1

我是SQL新手,因此如果您可以在回答正確的語法(對於PostgreSQL)中包含它,那將非常棒。使用CASE語句測試表1中的值,設置表2中的值

我有兩個表

表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

我假設您想在WHEREON子句中使用此項。

你可以做這樣的事情......

geo = 
CASE 
WHEN (geo_type1 is NOT NULL) THEN geo_type1 
WHEN (geo_type2 is NOT NULL) THEN geo_type2 
... 
ELSE geo_typeR 
END 
3

使用coalesce()功能:

geo = coalesce(geo1, geo2, ...,geoR) 

coalesce()返回列表中找到的第一個非空值,這是你的意圖是什麼。

作爲UPDATE語句:

update geo_summary set 
geo = (select coalesce(geo1, geo2, ...,geoR) 
    from geo_temp 
    where geo_temp.id = geo_summary.id) 
+0

謝謝!聚結效果很好。我應該提到geo_summary是一個空表。當我運行UPDATE語句時,我收到消息說「受影響的記錄爲0」。在這種情況下,我應該使用INSERT嗎?語法看起來像什麼?再次感謝你的幫助。 – RedTidal