PostgreSQL:在单个查询中高效使用计算列
PostgreSQL 是一个强大的关系数据库管理系统,提供强大的数据操作功能。 但是,在单个查询中使用计算列与某些其他数据库系统不同。 让我们来探讨一下这个细微差别。
考虑这种类似 SQL 的方法,它尝试直接在主查询中使用计算列:
<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
在计算 total_3
时未被识别为现有列。
解决方案涉及使用公共表表达式 (CTE) 或子查询来使中间计算列可用。 以下是如何使用 CTE 实现此目的:
<code class="language-sql">WITH calculated_totals AS ( 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 ) SELECT cost_1, quantity_1, cost_2, quantity_2, total_1, total_2, (total_1 + total_2) AS total_3 FROM calculated_totals;</code>
这个修改后的查询首先定义了一个 CTE calculated_totals
,它计算 total_1
和 total_2
。 然后,主查询引用 CTE 中的这些计算列来计算 total_3
。 这种方法确保了正确的计算而没有性能开销。 为了复杂查询中的可读性和可维护性,通常首选使用 CTE。 在这种情况下使用 CTE 或子查询不会对性能产生负面影响。
以上是如何在 PostgreSQL 的同一查询中使用计算列?的详细内容。更多信息请关注PHP中文网其他相关文章!