簡體   English   中英

如何在同一查詢中的查詢中使用創建的列?

[英]How can I use a created column within a query, within the same query?

讓我說

CASE WHEN apples.fruits = 'Macintosh' THEN 'Green' END AS FruitBasket

現在如何使用水果籃進行更改? 在這個非常查詢?

我想說

CASE WHEN FruitBasket = 'Green' THEN 'Awesome' END AS IsItGood

請記住,我希望這兩行代碼在同一查詢中運行。

您不會將第一個查詢插入到臨時表中,然后更新該臨時表嗎?

Select into #temp CASE WHEN apples.fruits = 'Macintosh' THEN 'Green' END AS FruitBasket,    othercolumn1,othercolumn2 

select CASE WHEN FruitBasket = 'Green' THEN 'Awesome' END AS IsItGood from #temp

最好的方法是表方法。

 CREATE FUNCTION fruit_basket(apples) RETURNS text LANGUAGE SQL AS $$
    CASE WHEN $1.fruits = 'Macintosh' THEN 'Green' END; $$;

然后,您可以像使用列一樣使用它,但必須對其進行限定,因為支持class.method語法。

 SELECT CASE WHEN a.fruit_basket = 'Green' THEN 'Awesome' end as is_it_good
   FROM apples a;

請注意,這會將a.fruit_basket轉換為fruit_basket(a),因此您不能省略a。 在fruit_basket之前。

注意,這將很好地執行,因為它對表中的元組進行操作,並且不會直接擊中表。 計划者可以將其內聯為SQL宏。

暫無
暫無

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

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