找到最小值时的别名问题

问题描述 投票:0回答:1

我有一个疑问:

部分:

and (("Table_Status"."Status_Lenght" - "Table_Status"."Min_Lenght" >= (select "threshold1" from "T_Everything" where "Frame" = 1 ))

我喜欢只从这个部分创建一个别名。

"Table_Status"."Status_Lenght" - "Table_Status"."Min_Lenght" as difference

所以我可以稍后使用差异。但是我尝试了很多方法,但使用“as”命令时出现语法错误。尝试放在 () 之间也行不通。 任何帮助。

谢谢。

postgresql alias
1个回答
0
投票

您只能在

SELECT
FROM
子句中指定别名,而不能在
WHERE
中指定。但也许您的问题是如何在
SELECT
条件下使用
WHERE
列表中定义的别名。这是不允许的,因为
WHERE
出现在
SELECT
之前。但是你可以使用子查询:

SELECT somecolumn, difference
FROM (SELECT somecolumn,
             "Table_Status"."Status_Lenght" - "Table_Status"."Min_Lenght" AS difference
      FROM tab) AS table_alias
WHERE table_alias.difference >= 41;

虽然看起来很复杂,但 PostgreSQL 会“拉起”子查询,并且查询可以很好地执行。

© www.soinside.com 2019 - 2024. All rights reserved.