PostgreSQL 计算列:实用指南
在单个 PostgreSQL 查询中使用计算列有时会带来挑战。 与其他一些 SQL 数据库不同,PostgreSQL 对计算列的处理需要特定的方法。
解决 SQL 语法不兼容问题
以下 SQL 代码在许多其他数据库系统中都可以使用,但在 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 FROM data;</code>
PostgreSQL 将报告 total_1
和 total_2
未定义。这是因为 PostgreSQL 将计算列视为别名,对于查询的执行来说是短暂的。
有效的解决方案:利用派生表
解决方案涉及使用派生表(或子查询)来克服此限制:
<code class="language-sql">SELECT cost_1, 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 ) AS t;</code>
通过将初始 SELECT
语句嵌套在派生表(别名为 t
)中,外部查询可以成功引用 total_1
和 total_2
别名。 此方法不会带来任何性能开销。
以上是如何在同一个 PostgreSQL 查询中使用计算列?的详细内容。更多信息请关注PHP中文网其他相关文章!