gpt4 book ai didi

postgresql - 如何避免在 postgresql 中重复长子查询?

转载 作者:行者123 更新时间:2023-11-29 13:32:59 26 4
gpt4 key购买 nike

在 postgresql 查询中,我有一个很长的子查询(包括很多子子查询),它有几个可能的结果范围,查询的结果应该是一个属于特定范围的数字。

我想要的是避免多次重复长子查询。

SELECT CASE WHEN (result_of_very_long_subquery) BETWEEN 0 AND 3 THEN 1 
WHEN (result_of_very_long_subquery) BETWEEN 3 AND 5 THEN 2
WHEN (result_of_very_long_subquery) BETWEEN 6 AND 10 THEN 3
WHEN (result_of_very_long_subquery) BETWEEN 11 AND 25 THEN
ELSE 5 END

解决方案必须是一个查询。 (我的意思是没有办法创建临时表等)

最佳答案

使用 Common Table Expressions - 它在内部使用物化选择

postgres=# WITH x AS (SELECT 10 AS y, pg_sleep(2)) 
SELECT y FROM x
UNION ALL
SELECT y FROM x
UNION ALL
SELECT y FROM x
y
────
10
10
10
(3 rows)

Time: 2003.318 ms

关于postgresql - 如何避免在 postgresql 中重复长子查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19473307/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com