2016-04-27 79 views
-1

我有表名爲Savannah,我在那裏有2列:animalsweightPostgreSQL「IF」問題

SELECT字符串(沒有WHERE運營商等)我需要(與IF運營商)顯示「成長曆史」名爲「獅子」的動物。

這就像:if animals = 'lion', show 'weight'

我怎樣才能做到這一點?

這個完整的查詢:

SELECT 
    f.id, f.date, f.login, f.fever_id, sum(p.source), 
    CASE animals WHEN 'lion' THEN weight END 
FROM 
    fb_prefer f 
LEFT JOIN 
    region r ON f.region_id = r.id 
LEFT JOIN 
    patrools p ON f.region_id = p.region_id 
LEFT JOIN 
    savannah_stats z ON f.region_id = z.region_id 
WHERE 
    f.source > '0' 
GROUP BY 
    f.id, f.fever_id 
+1

注意:SQL中沒有'IF' *運算符*。但是:就你而言,也許'CASE'可能是可用的。 – wildplasser

+0

我的不好,IF命令? –

+1

請閱讀'CASE WHEN ...'表達式手冊的這一部分:http://www.postgresql.org/docs/current/static/functions-conditional.html –

回答

1
SELECT animals, CASE animals WHEN 'lion' THEN weight END AS "Grow History" 
FROM mytable 
+0

Thx!但需要像這樣的形式: SELECT if((animals ='lions',)weight)作爲增長曆史 FROM mytable –

+0

@RuslanPodgorny:SQL中沒有「if」。這個答案將返回你想要的。嘗試一下。 –

+0

但是,代碼如何看,如果我不僅需要知道'獅子',而且要知道其他一些動物? –

0

您可以使用Case表達式來實現這一目標。 語法是這樣的: SELECT CASE動物當'獅''然後重量 END 從薩凡納;

您還可以編寫多個case表達式或多個WHEN,THEN表達式。

+0

Thx!但需要像這樣的形式: SELECT if((animals ='lions',)weight)Grow Table FROM mytable –