首页 > 数据库 > mysql教程 > 如何在 PostgreSQL 查询中使用计算列正确执行计算?

如何在 PostgreSQL 查询中使用计算列正确执行计算?

Barbara Streisand
发布: 2025-01-14 07:14:43
原创
279 人浏览过

How to Correctly Perform Calculations Using Calculated Columns in PostgreSQL Queries?

PostgreSQL 查询中正确使用计算列进行计算

在处理 PostgreSQL 中的数据时,通常需要对列进行计算以得出新的信息。为此,PostgreSQL 提供了创建计算列的功能,这些计算列可以用作创建它们的同一查询的一部分。

问题:不正确的 SQL 语法

考虑以下 SQL 语句,它在其他数据库管理系统 (DBMS) 中有效,但在 PostgreSQL 中失败:

<code class="language-sql">select cost_1, quantity_1, cost_2, quantity_2, 
      (cost_1 * quantity_1) as total_1,
      (cost_2 * quantity_2) as total_2,
      (calculated total_1 + calculated total_2) as total_3
from data;</code>
登录后复制

PostgreSQL 会引发错误,指出列 total_1total_2 不存在。

解决方案:将查询包装在派生表中

为了解决这个问题,PostgreSQL 要求将 SELECT 语句包装在派生表中:

<code class="language-sql">select cost1,
       quantity_1,
       cost_2,
       quantity_2,
       total_1 + total_2 as total_3
from (
    select cost_1, 
           quantity_1, 
           cost_2, 
           quantity_2, 
           (cost_1 * quantity_1) as total_1,
           (cost_2 * quantity_2) as total_2
    from data
) t;</code>
登录后复制

这种方法允许您访问派生表中的列别名,包括计算列 total_1total_2。它不会造成任何性能损失。

注意事项

值得注意的是,允许直接在后续计算中使用计算列的原始 SQL 语句,在 PostgreSQL 或其他 DBMS 中都不推荐。它可能导致性能问题并阻碍查询优化。

以上是如何在 PostgreSQL 查询中使用计算列正确执行计算?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板