在PostgreSQL中使用同一查询中的计算列
PostgreSQL不允许直接在同一SELECT
语句中使用别名进行计算。 例如,以下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_3
时,total_1
和total_2
尚未被定义。
解决方法是使用子查询(派生表):
<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 ) t;</code>
通过创建子查询t
,我们将total_1
和total_2
在外部SELECT
语句中定义为可用的列。这种方法不会带来性能损失。 外部查询引用内部查询的结果集,从而可以正确计算total_3
。
以上是如何在 PostgreSQL 中使用同一查询的计算列?的详细内容。更多信息请关注PHP中文网其他相关文章!