簡體   English   中英

如何在Postgres中的WHERE語句中添加WHERE語句?

[英]How can I add a WHERE statement to a WHERE statement in Postgres?

我想做這樣的事情:

CASE WHEN Derp.Herp = 'Nerp' THEN 'Gerp' ELSE NULL ENDS AS Herpty WHERE Herpty IS NOT NULL

這個想法是我希望在相同的查詢中運行,但問題是它Postgres通常會告訴我Herpty不存在(可能是因為它是在同一查詢中創建的),也許是約定俗成的-周圍? 對於我來說,這里的想法是獲得一個Herpty列,以排除'Nerp'中不是'Nerp'的內容Derp.Herp ,我不希望返回NULL。

更新:到目前為止,我得到的答案沒有幫助,我的實際查詢稍微復雜一些,我無法在WHERE語句中輸入WHERE Derp.Herp <> 'Nerp'因為在我的實際查詢中它實際上經過了2列WHEN語句,所以它更像是這樣: Derp.Herp = 'Nerp' AND Derp.Burp = 'Durp' THEN 'Gerp'因此,如果我在WHERE子句中添加它,它將變得模棱兩可,即WHERE Derp.Herp <> 'Nerp' AND Derp.Burp <> 'Durp'將完全消除Nerp和Durp,即使它們在2列中都不匹配,我正在為非營利性組織開展這項工作,請提供幫助。

這是我嘗試重新編寫代碼以使其更准確地反映出來: http ://pastebin.com/PgvAFvfq

簡短的回答:不,不完全是。 這是計算所得的列,在WHERE子句中不可用。 但是根據您的示例,您可以執行以下操作

WHERE Derp.Hepr <> 'NERP'

但是,那么整個查詢似乎幾乎沒有用。 您應該向我們展示您的真實查詢。

您可以稍微重新組織一下查詢;

SELECT CASE WHEN Derp.Herp = 'Nerp' THEN 'Gerp' ELSE NULL ENDS AS Herpty 
WHERE Herpty IS NOT NULL

是相同的

SELECT 'Gerp' AS Herpty WHERE Derp.Herp = 'Nerp';

你有沒有嘗試過:

當Derp.Herp ='Nerp'然后以'Gerp'結尾為空時的情況在這種情況下,當Derp.Herp ='Nerp'然后'Gerp'否則以NULL結尾的情況不為空。

檢查這一。 我希望它能起作用。

SELECT CASE WHEN Derp.Herp = 'Nerp' AND Derp.Burp = 'Durp' 
            THEN 'Gerp'
FROM (SELECT * FROM YOURTABLE 
               WHERE Derp.Herp <> 'Nerp' AND Derp.Burp <> 'Durp') Derp

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM