gpt4 book ai didi

sql - Postgres如何使用子句实现计算列

转载 作者:行者123 更新时间:2023-11-29 11:21:04 25 4
gpt4 key购买 nike

我需要按 postgres 中的计算列进行过滤。使用 MySQL 很容易,但如何使用 Postgres SQL 实现?

伪代码:

select id, (cos(id) + cos(id)) as op from myTable WHERE op > 1;

有什么 SQL 技巧吗?

最佳答案

如果不想重复表达式,可以使用派生表:

select *
from (
select id, cos(id) + cos(id) as op
from myTable
) as t
WHERE op > 1;

这不会对性能产生任何影响,它只是 SQL 标准要求的语法糖。

或者,您可以将上面的内容重写为公用表表达式:

with t as (
select id, cos(id) + cos(id) as op
from myTable
)
select *
from t
where op > 1;

您更喜欢哪一个很大程度上取决于品味。 CTE 的优化方式与派生表相同,因此第一个可能更快,尤其是当表达式 cos(id) + cos(id)

上有索引时

关于sql - Postgres如何使用子句实现计算列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32187583/

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