首页 > 数据库 > mysql教程 > 如何在 PostgreSQL 查询中使用计算列而不出错?

如何在 PostgreSQL 查询中使用计算列而不出错?

Patricia Arquette
发布: 2025-01-14 06:06:42
原创
555 人浏览过

How Can I Use Calculated Columns in PostgreSQL Queries Without Errors?

PostgreSQL 计算列:限制的解决方法

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,
       (total_1 + total_2) AS total_3  -- Error: total_1 and total_2 are not found
FROM data;</code>
登录后复制

出现该错误是因为 PostgreSQL 逐行处理查询; total_1total_2 不可用于同一 SELECT 语句中的后续计算。

解决方案涉及使用子查询(派生表)来封装初始计算。 这允许在外部查询中引用结果:

<code class="language-sql">SELECT cost_1, quantity_1, cost_2, quantity_2, total_1, total_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
) AS t;</code>
登录后复制

通过将 total_1total_2 的计算嵌套在内部 SELECT 语句(别名为 t)中,它们变得可访问并可用于外部 SELECT 语句中的进一步计算。此方法提供了一种实用且高效的方法来处理 PostgreSQL 中的计算列,而不会产生显着的性能开销。

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

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